我有一个JavaScript,它使用这种表示法来确保对象被初始化:
MyObject = MyObject || {};我理解它的作用,即如果不为MyObject分配一个空对象,则检查MyObject是否为任何值。我真的不是很了解JS的所有内部结构,所以我不明白如何在赋值中使用逻辑比较。
它怎麽工作?有没有其他语言允许这样做?
发布于 2012-08-03 15:48:02
取决于语言。
例如,在Ruby中,您可以使用此样式。
但是在PHP中,您不能使用这种风格,因为在PHP中,逻辑运算符总是返回布尔值(true/false)。
结论:
如果逻辑运算符总是返回布尔值,那么您就不能使用这种样式。
如果逻辑运算符在first value计算为时返回第一个值,否则返回第二个值,则可以使用此样式。
发布于 2012-08-03 15:47:19
这种语法的意思是“如果定义了MyObject,就给它自己赋值,否则,给它赋一个空对象。”
它之所以有效,是因为Javascript将未定义的值视为false,将已定义的值视为true。将其与逻辑表达式的惰性计算相结合,您将获得上述行为。
发布于 2012-08-03 15:46:52
逻辑-‘or’运算符具有短路语义,这意味着只有当左边的操作数计算为false时,才会计算右边的操作数。因此,如果初始化了MyObject,该语句将读取MyObject = MyObject; (不执行任何操作),否则为MyObject = {};。
https://stackoverflow.com/questions/11791412
复制相似问题