Двойная труба означает логическое «ИЛИ». На самом деле это не так, когда «параметр не установлен», поскольку строго в javascript, если у вас есть такой код:
function foo(par) {
}
Затем вызовы
foo()
foo("")
foo(null)
foo(undefined)
foo(0)
не являются эквивалент.
Двойной канал (||) передаст первый аргумент в значение boolean, и если результирующее логическое значение истинно, выполните задание, иначе оно назначит правильную часть.
Это имеет значение, если вы проверяете для параметра unset.
Допустим, у нас есть функция setSalary, которая имеет один необязательный параметр. Если пользователь не задает параметр, тогда следует использовать значение по умолчанию 10.
, если вы выполняете проверку следующим образом:
function setSalary(dollars) {
salary = dollars || 10
}
Это даст неожиданный результат при вызове типа
setSalary(0)
Он все равно установит 10, следуя описанному выше потоку.