gpt4 book ai didi

测试变量存在的 Javascript 多重赋值 : var obj = obj = obj || {}

转载 作者:行者123 更新时间:2023-11-30 06:27:03 29 4
gpt4 key购买 nike

在 Ady Osmani 的 blog post关于 js 中的命名空间,他提到了 5 个常见做法来测试先前定义的命名空间/对象是否存在以防止覆盖。我在这里复制我关注的 3 个:

var myApplication = myApplication || {}; // option 1
...
var myApplication = myApplication = myApplication || {}; // option 3
myApplication || (myApplication = {}); // option 4

根据他的说法,选项 3 比选项 1 好,但我看不出两者之间的区别。多做一项作业有什么好处?

另外,为什么选项 4 被认为是最佳实践?

最佳答案

任何没有 var 声明的选项都会在“严格”模式下导致异常(或者,正如评论中指出的那样,如果您在“严格”模式下!)。因此,书面的选项 4 不是一个选项。

选项 3 在任何方面都与选项 1 没有区别。选项 1 实际上与

var whatever;
whatever = whatever || {};

选项 3 是有效的:

var whatever;
whatever = whatever || {};
whatever = whatever;

var 声明(不是 初始化赋值)在所有情况下都被视为出现在范围的开头(在此上下文中,脚本单元) .如果符号已经声明(已经是 window 的属性),则 var 声明无效。

因此,var 声明至关重要。因为它被提升到代码的顶部,所以在“whatever”已定义的情况下,初始化表达式不会导致“ReferenceError”。因为 var 以非破坏性方式处理声明,所以可以引用 = 运算符右侧的符号。

关于测试变量存在的 Javascript 多重赋值 : var obj = obj = obj || {},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20427386/

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