保持原始值为“variable = NEWVAR || variable;”

时间:2013-03-12 13:33:43

标签: javascript variables

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

variable = NEWVAR || variable;

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

这是一个测试用例:

var test = "hello";

test = undefined || test;

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

2 个答案:

答案 0 :(得分:1)

是和否。它在技术上有效,但您必须小心falsy values,因为如果NEWVAR0false""或任何其他虚假价值,它就赢了不会被分配。更明智的方法是检查NEWVAR是否已定义,可能是第三个运营商:

variable = (typeof NEWVAR === "undefined") ? variable : NEWVAR;

答案 1 :(得分:1)

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

Douglas Crockford:Javascript The Good Parts(p.40)

  

||如果第一个操作数是真实的,则运算符产生其第一个操作数的值。否则,它产生了   第二个操作数的值。

因此,如果NEWVAR包含任何虚假(falsenullundefinedNaN0"")值,第二个操作数被评估。

只要您了解这一点,您就可以始终使用||运算符来获取默认值

Douglas Crockford:Javascript The Good Parts(p.51)

  

||运算符可用于填充默认值:

var middle = stooge["middle-name"] || "(none)";
var status = flight.status || "unknown";