因此,在Kyle Simpson的“功能轻型JavaScript”一书中,他有一章关于使用以下代码示例来编写函数:
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] = ...我似乎找不到有关用方括号命名变量的任何信息,所以他在那时完全失去了我。我能说什么,我读代码就像编译器一样,当我遇到一些我认为违反规则的东西时,我会被绊倒。有人能帮我精神上编译这段经文吗?
答案 0 :(得分:3)
这是变量(数组)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
答案 1 :(得分:0)
他使用的是array destructuring,它与
几乎完全相同var key = Object.keys( nextArgObj)[0];