Подтвердить что ты не робот

Использование || {} в Javascript

Я видел что-то подобное в Javascript:

   function name (secret) {
          secret = secret || {};

Я не могу найти нигде, что именно означает secret = secret || {};

Является ли это средним создание глобальной переменной со значением переданного аргумента или объекта?

Когда вы его используете? Когда аргумент не передан?

4b9b3361

Ответ 1

Что это означает

Если переменная secret является ложью (одна из следующих):

  • false
  • 0
  • '' (пустая строка)
  • null
  • undefined
  • NaN

.. затем установите его в {} (пустой объект - это то же самое, что и new Object()).


Альтернативный код

Он также может быть записан следующим образом:

if (!secret) secret = {};

Но поскольку это больше, большинство людей предпочитают выше.


Почему?

Это решение полезно, поскольку javascript не имеет параметров функции по умолчанию.

Например, пример в PHP может выглядеть так:

<?php
    function foo($bar = 'default') {
        echo $bar;
    }
?>

и в JS, который может быть

function foo(bar) {
    bar = bar || 'default';
    console.log(bar);
}
foo(); //default
foo(NaN); //default
foo(undefined); //default
foo(null); //default
foo(false); //default
foo(0); //default
foo(''); //default
foo('something'); //something
foo(12); //12
foo(1.2); //1.2

Что делать, если я хочу только установить значение по умолчанию, если ничего не было установлено?

Если вы только хотите проверить отсутствие значения (нет значений ложности), вы можете использовать typeof в JS:

function foo(bar) {
    if (typeof bar == 'undefined') bar = 'default';
    console.log(bar);
}
foo(); //default
foo(undefined); //default
foo(NaN); //NaN
foo(null); //null
foo(false); //false
foo(0); //0
foo(''); //(empty string)
foo('something'); //something
foo(12); //12
foo(1.2); //1.2