Интересно, это они абсолютно одинаковые:Операторы === и ||
var a = something1.something2 === undefined ? 1 : something1.something2;
var b = something1.something2 || 1;
Интересно, это они абсолютно одинаковые:Операторы === и ||
var a = something1.something2 === undefined ? 1 : something1.something2;
var b = something1.something2 || 1;
No. В первом, something1.something2
имеет быть для того, чтобы получить значение 1
undefined
. Во втором он просто должен быть ложным. Существует множество falsy values: 0
, ""
, NaN
, null
, undefined
, и, конечно, false
.
Нет, они не являются.
Если вы принимаете значение 0
за something1.something2
, то в первом случае возвращаемое значение равно 0
.
Второй случай возвращает 1
, из-за значения фальши 0
.
'undefined' также можно переопределить ...' typeof v == 'undefined'' следует использовать ... – deceze
@deceze: Нет, более эффективный способ борьбы с ним - найти тех, кто переопределяет 'undefined' as что-то другое, чем «неопределенное», и избивали их о голову и плечи холодными, влажными спагетти, пока они не опомнились. –
@ T.J. Да, разумное решение. – deceze