Im, изучающий javascript, и сегодня я нашел этот код:
window.Picture2 = window.Picture2 || {};
Я не понимаю || {}; Может ли кто-нибудь объяснить это мне? Tks так много:)
Im, изучающий javascript, и сегодня я нашел этот код:
window.Picture2 = window.Picture2 || {};
Я не понимаю || {}; Может ли кто-нибудь объяснить это мне? Tks так много:)
Это опасный способ присвоить значение по умолчанию глобальной переменной Picture2
.
window.Picture2 = window.Picture2 || {};
Это инициализирует window.Picture2
как новый объект {}
, если он не определен. Однако, поскольку это проверка правдоподобия, Picture2
также будет присвоен пустой объект, если он имеет какие-либо из этих значений ложности:
// these are all falsy
0, NaN, null, '', undefined, false
который может не быть желательным поведением для всех этих случаев, особенно для значений 0
, NaN
, false
или ''
.
Есть предложение для ecmascript 6 добавить оператор по умолчанию, который действительно проверяет undefined
и ничего больше:
window.Picture2 ??= {};
Он присваивает пустой объект по умолчанию window.Picture2
, если window.Picture2
- undefined (falsy)
Он проверит, что .Picture2
был определен, если он использует это значение, иначе назначьте Window.Picture2
в новый объектный литерал.
В качестве состояний @Christoph - Picture2
будет назначен новый объектный литерал, если объект falsy
.
Он читается как:
Если window.Picture2 - undefined или null, присвойте пустой объект window.Picture2
Если значение window.Picture2
равно undefined (false при условной оценке), то OR (||
) вызывается, а window.Picture2
становится пустым.