(1) 和 (2) 之间是否存在任何重要差异(语义、性能相关等)?
var obj = obj || {};
var obj = Object(obj);
上下文。第一个是我在 Django 的模板和我的 js 文件之间共享变量的方式。我刚刚看到 Rauschmayer 2014 中的一个部分(“用于转换 bool 值、数字、字符串和对象的函数”,第 79 页),他在其中描述了 Object(obj)
如下:
obj
nếu nhưobj
是一个对象,
{}
nếu như obj
Đúng undefined
hoặc null
,
- [wrapped primitive] 如果
obj
是原始值。
考虑到(非常非正式的)语义(特别是前两个子句),在我看来我们可以在我们使用 (1) 的任何地方使用 (2),但我不完全确定这会产生什么后果。
Rauschmayer, Axel (2014) Speaking JavaScript (免费在线阅读)。
是的,有区别,因为您给出的报价已经提到了。当 obj
是原语时,第一个符号将返回原语本身。第二个将返回一个包装原语,它是一个对象。
如果代码的其余部分依赖于 obj
是一个对象,则第二种表示法更具防御性。
但话又说回来,第一种表示法更常见,人们可能想知道如何将原始值分配给名为 obj
的变量。
Tôi là một lập trình viên xuất sắc, rất giỏi!