对象等于自身或空对象

时间:2012-08-03 07:44:33

标签: javascript

我有一个使用这种表示法的JavaScript来确保对象被初始化:

MyObject = MyObject || {};

我理解它的作用,即检查是否有任何东西,如果没有将空对象分配给MyObject。我真的不太了解JS的所有内部结构,所以我没有看到如何在赋值中使用逻辑比较。

它是如何工作的?有没有其他语言允许这个?

3 个答案:

答案 0 :(得分:2)

此语法的意思是“如果已定义,则将MyObject分配给自身。否则,请为其指定空对象。”

它的工作原理是因为Javascript将未定义的值视为false,并将定义的值视为true。将其与逻辑表达式的惰性求值相结合,就可以得到上述行为。

答案 1 :(得分:2)

取决于语言。

例如,在Ruby中,您可以使用此样式。

但是在PHP中,你无法使用这种风格,因为在PHP中,逻辑运算符总是返回一个布尔值(true / false)。

结论:

如果逻辑运算符始终返回布尔值,则无法使用此样式。

如果逻辑运算符在第一个值计算为true时返回第一个值,否则返回第二个值,则可以使用此样式。

答案 2 :(得分:1)

逻辑'''运算符具有短路语义,这意味着只有左手操作数评估为false时才会评估右手操作数。因此,如果<{1}} 被初始化,则语句将显示MyObject(不执行任何操作),否则为MyObject = MyObject;