首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象等于自身或空对象

对象等于自身或空对象
EN

Stack Overflow用户
提问于 2012-08-03 15:44:33
回答 3查看 653关注 0票数 1

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

代码语言:javascript
复制
MyObject = MyObject || {};

我理解它的作用,即如果不为MyObject分配一个空对象,则检查MyObject是否为任何值。我真的不是很了解JS的所有内部结构,所以我不明白如何在赋值中使用逻辑比较。

它怎麽工作?有没有其他语言允许这样做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-03 15:48:02

取决于语言。

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

但是在PHP中,您不能使用这种风格,因为在PHP中,逻辑运算符总是返回布尔值(true/false)。

结论:

如果逻辑运算符总是返回布尔值,那么您就不能使用这种样式。

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

票数 2
EN

Stack Overflow用户

发布于 2012-08-03 15:47:19

这种语法的意思是“如果定义了MyObject,就给它自己赋值,否则,给它赋一个空对象。”

它之所以有效,是因为Javascript将未定义的值视为false,将已定义的值视为true。将其与逻辑表达式的惰性计算相结合,您将获得上述行为。

票数 2
EN

Stack Overflow用户

发布于 2012-08-03 15:46:52

逻辑-‘or’运算符具有短路语义,这意味着只有当左边的操作数计算为false时,才会计算右边的操作数。因此,如果初始化了MyObject,该语句将读取MyObject = MyObject; (不执行任何操作),否则为MyObject = {};

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11791412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档