Зачем использовать || в объявлении переменной функции?

Я изучаю js, и я столкнулся с примером, в котором || используется при объявлении var как функции:

var Triangulation = Triangulation || (function() {   
...   

Мне кажется, что это проверка на то, что var уже был объявлен перед назначением. Оглядываясь в Интернете, я не вижу других примеров использования этого подхода. Что было бы причиной для этого подхода vs:

var Triangulation = function() {   
...  

Спасибо

Ответы

Ответ 1

Это означает, что существует вероятность того, что уже определена переменная triangulation, если она есть, переменная triangulation вернется сама, если еще не определена - анонимная функция вернет значение для новой переменной triangulation.

И важная/чувствительная вещь есть var. Это сложный бизнес. Например:

<script>
var triangulation = function (){return(1);};
</script>

На самом деле означает:

<script>
window.triangulation = function (){return(1);};// because "triangulation" is in global                       
                                               // namespace and "var" in this case 
                                               // means nothing "local", as you may expect
</script>

В следующий раз инициализация var triangulation = ... будет переписать глобальную переменную. Если вы хотите сохранить, вам нужно написать:

var triangulation = triangulation || function (){...}; 

Ответ 2

Он проверяет, существует ли Triangulation перед тем, как присвоить ему новое значение, используя Short-circuiting. Это обычная практика, когда вы хотите поддерживать функцию, которая отличается от браузеров браузерами.

Одним из примеров является requestAnimationFrame. Поскольку для каждого браузера требуется другой префикс поставщика, мы используем || для назначения правильного метода переменной, чтобы он поддерживал все браузеры.

window.requestAnimFrame = (function(){
  return  window.requestAnimationFrame       ||
          window.webkitRequestAnimationFrame ||
          window.mozRequestAnimationFrame    ||
          function( callback ){
            window.setTimeout(callback, 1000 / 60);
          };
})();

//whatever exists will be assigned to window.requestAnimFrame .

Ответ 3

Для || оператор, JS возвращает значение первого выражения, которое оценивает значение правды
Например:
A || B (предполагая, что A - пустая строка, а B - целое число (12))
Вышеприведенное выражение вернет 12 (то есть первое выражение, которое оценивает значение правды).

В вашем сценарии мы проверяем, объявлена ​​ли триангуляция, тогда нам нужно вычислить выражение функции и назначить ее для триангуляции.
var Триангуляция = триангуляция || (function() {

Ответ 4

Это часто используется для пакетов с именами, у которых их реализации разделены между несколькими файлами, когда вы не обязательно знаете (или хотите управлять) порядок загрузки файлов. Обычно вы делаете это с помощью:

var Namespace = Namespace || {}

В вашем случае это просто для предотвращения переназначения класса Triangulation, если он уже определен.

Ответ 5

Существует несколько видов операторов, которые мы использовали в Javascript как && & (и) || (или) а также! (Не).

Эти операторы также известны как логические операторы.

Логические операторы в основном используются для управления потоком программы. Обычно вы найдете их как часть if, while или некоторого другого управляющего оператора.

|| оператор используется для определения того, выполняется ли какое-либо из условий.

Пример:

if (x == 5 || y == 5) { .... .... }

Спасибо.