因此,在凯尔·辛普森 (Kyle Simpson) 所著的《Functional-Light JavaScript》一书中,有一章介绍柯里化(Currying)函数,其中包含以下代码示例:
function curryProps(fn, arity = 1) {
return (function nextCurried(prevObjsArgs) {
return function curried(nextArgObj = {}) {
var [key] = Objects.keys( nextArgObj) ;
var allArgsObj = Object.assign( {}, prevArgsObj, { [key] : nextArgObj[key] } );
if (Object.keys( allArgsObj ).length >= arity) {
return fn( allArgsObj );
} else {
return nextCurried( allArgsObj );
}
};
})( {} );
}
我在移动设备上输入了该内容,因此请原谅任何拼写错误,但我的问题是该函数第 4 行的关键代码是什么。他赋值的地方: var[key] = ... 我似乎找不到任何有关用方括号命名变量的信息,所以他当时完全迷失了我。我能说什么,我像编译器一样阅读代码,当我遇到一些我认为违反规则的东西时,我就会被绊倒。有人可以帮我在心里整理这段文字吗?
最佳答案
这是变量(数组)destructuring assignment :
var arr = [1,2,3];
var [x, y] = arr; // assigns 1 to x and 2 to y.
在他的例子中,Object.keys
返回数组中键的数组。他只提取第一个元素:
var o = {x:3, y:6, z:4};
var [p] = Object.keys(o); // just the first key
关于javascript - Kyle Simpson 的 Function-Light JavaScript 中令人困惑的变量赋值 var[key] =,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50909476/