javascript - 检查是否已设置变量不起作用

标签 javascript if-statement initialization undefined

我试图仅在尚未设置变量时设置它。出于某种原因,我用来确定变量是否已设置的逻辑似乎在运行,即使变量是否已设置也是如此。

我的代码是

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)”似乎什么都不做

参见 example on codepen

最佳答案

使用 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/

相关文章:

sql-server - 为什么不能在select语句中使用if语句?有人知道另一种方法吗?

php 如果某项等于 x、y 或 z

java - 将 boolean 值的四个组合转换为真/假 - 使用 IF Else 语句

javascript - ES2015 模块初始化不起作用

javascript - 如何将数字转换为字符串并将它们放入 JavaScript 中的数组中?

javascript - 浏览器默认字体的CSS

c++ - 初始化 C++ 结构的正确方法

c - 如何直接分配在结构内声明的整数数组?

javascript - Bootstrap 模式窗口中的错误位置 imgAreaSelect 插件

javascript - 生成自定义 JSON 数组