JS严格模式-访问布尔变量

时间:2019-02-14 15:07:24

标签: javascript scope strict-mode

因此,我在Stack Overflow上四处寻找并发现了类似的问题,但找不到我可以应用于我的问题。我处于严格模式下,我定义了一个变量(loaded = false),并尝试根据其正确或错误的位置执行if / else语句...并且在运行一次之后,我希望它切换到“ true”,因此它将不会再次运行。下面是代码:

"use strict"
let loaded = false;
if (loaded === false) {
  //do an action
  loaded = true;
}

但是在“ loaded = true”时出现错误,提示“从未使用分配的值”。我假设这是一个范围界定问题,但是我不确定该怎么做?

谢谢!

*更多详细信息: 这是我正在使用的代码。显然,由于使用了其他变量,因此其中一些不可读,但这也许会有所帮助。

let loaded = false;

  if (loaded === false) {
    // animate swipe on map load
    this.view.when().then((() => {
    setTimeout(() => { // delay 1500ms for the map to load a bit
      $(".movable").animate({left: "50%"},
        {
         duration: 1200,
         easing: 'easeInOutCubic',
         step: (function (now, fx) {
         this._setOption('swipeX', layerViewContainer.element.width * now / 100);
        }).bind(this)
      });
     }, 1800);
    }).bind(this));
   loaded = true;
  }

因此,您看到的是,我正在尝试将变量设置为true,以便在他们在页面上执行操作时不会再次运行...由于某些原因,更改页面上的某些内容将使滑动重新生效(我不想发生)。

1 个答案:

答案 0 :(得分:3)

这不是范围问题。

  1. 首先,将其设置为false
  2. 然后您的if读取值,以便使用该值。
  3. 然后,您为其分配一个新值(true
  4. 然后您就结束了。

更改代码后,您的代码将永远不会读取loaded,因此,lint会抱怨,因为您无意中设置了它而无法找到它。