我试图仅在尚未设置变量时设置它。出于某种原因,我用来确定变量是否已设置的逻辑似乎在运行,即使变量是否已设置也是如此。
我的代码是
var l0 = -210;
function add(){
var lThis;
if (lThis == null){
lThis = l0;
console.log('set lThis to '+ lThis);
}
lThis ++;
}
var incrementInterval = setInterval(add, 33);
每次间隔运行时,控制台都会记录“将 lThis 设置为 -210”,因此“if (lThis == null)”似乎什么都不做
最佳答案
使用 setInterval 函数添加从开始每 33 毫秒执行一次,重新创建整个函数范围,包括 lThis。我想你想要实现的是在函数内每次调用 lThis 时加 1。实现这一目标的方法之一是以下列方式使用闭包:
var l0 = -210;
function thunkAdd(){
var lThis = l0;
console.log('set lThis to '+ lThis);
return function inc() {
console.log(lThis);
return lThis ++;
}
}
var incrementInterval = setInterval(thunkAdd(), 33);
请注意,这是编写 JavaScript 的旧方法,使用新的 ES6 语法可以以更紧凑的形式实现:
const l0=-210;
function *add() {
let lThis = l0;
while (true) yield lThis++;
}
const lAdd = add()
const incrementInterval = setInterval(() => {console.log(lAdd.next())}, 33);
关于javascript - 检查是否已设置变量不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41231612/