Зачем использовать || в объявлении переменной функции?
Я изучаю 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)
{
....
....
}
Спасибо.