1

如果新值未定义,这是更新变量并保留原始值的合法方法吗?

variable = NEWVAR || variable;

我创建了一个Fiddle,到目前为止它看起来不错,但我不想得到任何令人讨厌的惊喜。

这是一个测试用例:

var test = "hello";

test = undefined || test;

alert('"' + test + '"');
4

2 回答 2

1

是和不是。它在技术上是有效的,但你必须小心虚假值,因为如果NEWVARis 0false""或任何其他虚假值,它将不会被分配。更明智的方法是检查是否NEWVAR已定义,可能使用三级运算符:

variable = (typeof NEWVAR === "undefined") ? variable : NEWVAR;
于 2013-03-12T13:41:53.203 回答
1

我会说,是的,我经常使用它。但你必须记住

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";
于 2013-03-12T14:07:29.327 回答