繁体   English   中英

(obj || {})vs Object(obj)

[英](obj || {}) vs Object(obj)

在(1)和(2)之间是否存在任何重要的差异(语义,性能相关等)?

  1. var obj = obj || {};
  2. var obj = Object(obj);

语境。 第一个是我在Django的模板和我的js文件中共享变量的方式。 我刚刚看到Rauschmayer 2014中的一节(“转换布尔值,数字,字符串和对象的函数”,第79页),其中描述了Object(obj) ,如下所示:

  • obj如果obj是一个对象,
  • {}如果obj undefined或为null
  • [wrapped primitive]如果obj是原始值。

鉴于(非常非正式)语义(特别是前两个条款),在我看来,我们可以使用(2)我们将使用的任何地方(1),但我不完全确定这将产生什么后果。

Rauschmayer,Axel(2014) Speaking JavaScript (免费在线阅读)。

是的,有一点不同,正如你给出的引用已经提到的那样。 obj是一个原语时,第一个表示法将返回原语本身。 第二个将返回一个包装原语,它是一个对象。

如果代码的其余部分依赖于obj作为对象,则第二种表示法更具防御性。

但话说回来,第一个符号更常见,人们可能想知道如何将原始值分配给名为obj的变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM