function getCtr(){
var i = 0;
return function(){
console.log(++i);
}
}
var ctr = getCtr();
ctr();
ctr();
最近五年来我一直在使用Javascript,但是这个问题使我在上一次面试中变得愚蠢。我已尽力尝试了所有方法,但无法解决。
能否请您提供输出结果和原因,以便我能更好地为以后的面试做好准备。
最佳答案
var ctr = getCtr();
这将调用
getCtr()
,它将i初始化为0,并存储对该函数的引用function() {
console.log(++i)
}
在点击率。由于该函数是在getCtr()范围内创建的,因此变量i仍可以在
ctr
中存储的函数范围内访问。首次致电
ctr()
执行在i上具有预增的
console.log(++i)
,因此将输出1
。第二个调用以相同的预增量执行相同的代码,并打印出2
。免责声明:不是JavaScript开发人员。如果我犯了错误或使用了一些不受欢迎的措辞,请原谅我。