Мое понимание этой условной ценности |правильное присвоение значения? - PullRequest
0 голосов
/ 11 октября 2019

Я сценарий коллеги, который пронизан следующим кодом:

(window.WORLD_CLOCK || (window.WORLD_CLOCK = WORLD_CLOCK))();

Теперь есть функция с именем WORLD_CLOCK, которая определена перед этой строкой.

Из чегоЯ предполагаю, что это проверяет, чтобы увидеть, содержит ли объект window ключ с именем WORLD_CLOCK, если он делает (true), он возвращает эту функцию, если нет (false), он назначает WORLD_CLOCK окнуи возвращает функцию WORLD_CLOCK из этого назначения.

Внешняя скобка захватывает эту функцию, а третья (пустая) пара скобок вызывает эту функцию.

Верно ли это предположение?

Если это так, было бы целесообразно заменить эту строку следующим кодом:

if (typeof WORLD_CLOCK === "function") {
  if (!window.hasOwnProperty("WORLD_CLOCK")) {
    window.WORLD_CLOCK = WORLD_CLOCK;
  }
  window.WORLD_CLOCK();
}

Спасибо.

Ответы [ 2 ]

1 голос
/ 11 октября 2019

Я думаю, что это может быть больше похоже (не то, чтобы вы выполнили это так, просто более прямой перевод).

if (window.WORLD_CLOCK) {
  window.WORLD_CLOCK();
} else {
  window.WORLD_CLOCK = WORLD_CLOCK;
  window.WORLD_CLOCK();
}
1 голос
/ 11 октября 2019

Я думаю, что код вашего коллеги предполагает, что всегда есть функция WORLD_CLOCK, и шаги:

  1. , если window не имеет свойства WORLD_CLOCK, назначьте функцию WORLD_CLOCK свойству сто же имя
  2. вызовите свойство WORLD_CLOCK из объекта window

, поэтому, возможно, перезапись может быть такой:

if (!window.hasOwnProperty("WORLD_CLOCK") {
  window.WORLD_CLOCK = WORLD_CLOCK
}

window.WORLD_CLOCK()
...