Javascript闭包和范围之谜
我听过这个问题,我不知道如何解决它 要求是:从实现功能,以便在以下场景中执行类似的功能:Javascript闭包和范围之谜,javascript,Javascript,我听过这个问题,我不知道如何解决它 要求是:从实现功能,以便在以下场景中执行类似的功能: var x = from(3); console.log(x()); //outputs 3 console.log(x()); //outputs 4 //TODO: implement from() 我试过这样的方法: function from(val) { var counter = val; return function(){ return counter+=1; } }
var x = from(3);
console.log(x()); //outputs 3
console.log(x()); //outputs 4
//TODO: implement from()
我试过这样的方法:
function from(val) {
var counter = val;
return function(){
return counter+=1;
}
}
但我第一次运行它时,它会增加值,所以这是不可能的。最简单的解决方案是从计数器中减去1: 但是,在这种情况下,您可以使用postfix++运算符,因为在counter++中,counter的值增加了1,但返回了counter的旧值。 你应该很乐意和我一起去
function from(val) {
var counter = val;
return function(){
return counter++;
}
}
为了完整性起见,计数器+=1的等价物是++计数器。
函数fromval{
var计数器=val;
返回函数{
返回计数器++;
}
}
var x=from 3;
alertx//产出3
alertx//产出4
alertx//产出5
alertx//产出6
alertx//产出7
alertx//输出8您是否尝试过实现它?那么,您的实现出了什么问题?您自己尝试过了吗?Post increment会起作用,而不是返回计数器+=1返回计数器++,这样计数器首先返回,然后递增。
function from(val) {
var counter = val;
return function(){
return counter++;
}
}
var x = from(3);
function from(startValue) {
var counter = startValue;
return function() {
return counter++;
}
}
console.log(x()); //outputs 3
console.log(x()); //outputs 4