如果新值未定义,这是更新变量并保留原始值的合法方法吗?
variable = NEWVAR || variable;
我创建了一个Fiddle,到目前为止它看起来不错,但我不想得到任何令人讨厌的惊喜。
这是一个测试用例:
var test = "hello";
test = undefined || test;
alert('"' + test + '"');
如果新值未定义,这是更新变量并保留原始值的合法方法吗?
variable = NEWVAR || variable;
我创建了一个Fiddle,到目前为止它看起来不错,但我不想得到任何令人讨厌的惊喜。
这是一个测试用例:
var test = "hello";
test = undefined || test;
alert('"' + test + '"');
是和不是。它在技术上是有效的,但你必须小心虚假值,因为如果NEWVAR
is 0
、false
、""
或任何其他虚假值,它将不会被分配。更明智的方法是检查是否NEWVAR
已定义,可能使用三级运算符:
variable = (typeof NEWVAR === "undefined") ? variable : NEWVAR;
我会说,是的,我经常使用它。但你必须记住
Douglas Crockford:Javascript 的优点(第 40 页)
|| 如果第一个操作数为真,则运算符产生其第一个操作数的值。否则,它产生第二个操作数的值。
因此,如果NEWVAR
包含任何虚假 ( false
, null
, undefined
, NaN
, 0
, ""
) 值,则计算第二个操作数。
只要您知道这一点,您就可以随时使用||
运算符来获取默认值
Douglas Crockford:Javascript 的优点(第 51 页)
|| 运算符可用于填写默认值:
var middle = stooge["middle-name"] || "(none)";
var status = flight.status || "unknown";