JS Strict Mode - Доступ к логической переменной - PullRequest
0 голосов
/ 14 февраля 2019

Итак, я просмотрел все переполнения стека и нашел похожие вопросы, но не смог найти тот, который мог бы применить к моему.Я в строгом режиме, и я определил переменную (загружен = ложь), и пытаюсь сделать оператор if / else, основываясь на том, где это правда или ложь ... и после того, как он выполняется один раз, я хочу, чтобы он переключился на"правда", поэтому он не будет работать снова.Ниже приведен код:

"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 голосов
/ 14 февраля 2019

Это не проблема с областью видимости.

  1. Сначала вы устанавливаете его на false.
  2. Затем ваш if читает значение, чтобы использовать его.
  3. Затем вы присваиваете ему новое значение (true).
  4. Затем вы добираетесь до конца.

Ваш код никогда не читает loaded послевы меняете его, поэтому линтер жалуется, потому что вы устанавливаете его без цели, которую он может найти.

...