如果新值未定义,这是更新变量并保留原始值的合法方法吗?
variable = NEWVAR || variable;
我创建了一个Fiddle,到目前为止它看起来不错,但我不想得到任何令人讨厌的惊喜。
这是一个测试用例:
var test = "hello";
test = undefined || test;
alert('"' + test + '"');
    如果新值未定义,这是更新变量并保留原始值的合法方法吗?
variable = NEWVAR || variable;
我创建了一个Fiddle,到目前为止它看起来不错,但我不想得到任何令人讨厌的惊喜。
这是一个测试用例:
var test = "hello";
test = undefined || test;
alert('"' + test + '"');
    是和不是。它在技术上是有效的,但你必须小心虚假值,因为如果NEWVARis 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";