Да, он может это сделать, но, строго говоря, он назначит значение по умолчанию, если полученное значение равно falsey , в отличие от истинно undefined . Поэтому он будет соответствовать не только undefined
, но и null
, false
, 0
, NaN
, ""
(но не "0"
).
Если вы хотите установить значение по умолчанию, только если переменная строго undefined
, тогда самый безопасный способ - написать:
var x = (typeof x === 'undefined') ? def_val : x;
В новых браузерах на самом деле безопасно писать:
var x = (x === undefined) ? def_val : x;
но имейте в виду, что это можно подорвать в старых браузерах, где было разрешено объявить переменную с именем undefined
, имеющую определенное значение, что привело к сбою теста.