gpt4 book ai didi

javascript - (obj || {}) 与对象(obj)

转载 作者:可可西里 更新时间:2023-11-01 01:51:54 37 4
gpt4 key购买 nike

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

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

上下文。第一个是我在 Django 的模板和我的 js 文件之间共享变量的方式。我刚刚看到 Rauschmayer 2014 中的一个部分(“用于转换 bool 值、数字、字符串和对象的函数”,第 79 页),他在其中描述了 Object(obj) 如下:

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

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

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

最佳答案

是的,有区别,因为您给出的报价已经提到了。当 obj 是原语时,第一个符号将返回原语本身。第二个将返回一个包装原语,它是一个对象。

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

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

关于javascript - (obj || {}) 与对象(obj),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31361219/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com