gpt4 book ai didi

javascript - 为什么以及何时应该使用 window.varName 来声明全局变量?

转载 作者:行者123 更新时间:2023-11-28 04:53:20 25 4
gpt4 key购买 nike

我刚刚遇到了一个我以前从未见过的约定:

window.theme = window.theme || {};

花了一些时间研究它,我发现这是使用 var 声明全局变量的替代方法。为什么以及什么时候我会想要这样做?仅仅是个人喜好吗?

另外:这与问题没有直接关系,但 OR 运算符也让我感到困惑。我理解它的功能:它设置 window.theme到一个空对象(如果它尚不存在)。这是否只是作为一种安全预防措施,以防万一它已经在脚本的其他地方实例化了?

最佳答案

在全局级别上查看 window.varName 与 var varName 的答案:https://stackoverflow.com/a/12393346/2592585

我个人的偏好是避免全局变量,因为在企业应用程序中,它们很容易发生冲突,其他人会弄乱它们,等等。安全性也成为一个问题(你是否想要一些来自天知道在哪里可以访问的错误脚本)那个变量?)。它们类似于 Java 类中的公共(public)字段。 “现代”JS 开发使用依赖注入(inject)或持久服务来共享数据。

您所指的特定语法在伪代码中读起来像这样:将 window.theme 设置为其本身或空对象。该表达式从左到右计算,因此如果定义了 window.varName,JS 会将其计算为“true”并在此结束,并将其分配给自身。如果 window.varName 未定义,则该语句的计算结果为 false,并且 OR 将导致 window.varName 被分配给右侧的内容,{}

更明确地了解其操作方式是将其编写为三元运算符:window.varName = (window.varName ? window.varName : {});,但大多数人更喜欢您的为了简单起见,使用三元运算符进行单行赋值,其条件比简单的未定义检查更复杂。

您所指的语法是执行 JS namespacing 时的常见做法,或将属性附加到要定义的对象。如果它已经存在,那么酷,继续,否则将其设置为空对象,这样就不会出现错误。

关于javascript - 为什么以及何时应该使用 window.varName 来声明全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42731991/

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