一个朋友在Javascript求职面试中遇到了这个问题:
说明此计数器的工作原理(换句话说,非最小版本是什么)
let Counter = (_=1)=>$=>_++
let c1 = Counter()
console.log(c1()) //1
console.log(c1()) //2
答案 0 :(得分:4)
这与
相同const Counter = function(counter = 1) {
return function count() {
return counter++;
};
}
因此,基本上,当您调用Counter()
时,它会将counter
封装为1
作为默认值,并且每次调用它返回的count函数时,它都会返回计数器值并将其增加1
答案 1 :(得分:1)
(_=1)=>$=>_++
这是使用箭头语法的函数,它等于
function f(_ = 1) {
return $ => _++;
}
$ => _++;
也是箭头功能,它捕获闭包_
,对它进行增量计算并返回(后缀递增,因此实际上它返回值并随后递增):
function f(_ = 1) {
return function($) { return _++; };
}
所以代码等于
function Counter(count = 1) {
return function() { return count++; };
}
((将_
重命名为count
,并删除了多余的$
变量)
函数Counter
每次都从count
值开始,像计数器一样,返回前一个值+ 1