gpt4 book ai didi

javascript - 变量声明是否成为 ecmascript 6 模块中窗口的属性?

转载 作者:行者123 更新时间:2023-11-29 21:57:14 25 4
gpt4 key购买 nike

在 ECMAScript 5 及以下版本中,脚本顶层的 var 声明成为全局变量,也就是说,全局对象(浏览器中的 window)的属性。 ) 在 ECMAScript 6 中,我们现在有了模块。模块处于严格模式,所以我们不会通过忘记 var 自动创建一个全局变量,但是如果我在模块的顶层声明一个 var,它会变成window 对象的全局属性?如果我使用 letconst 或 ES6 中添加的任何新声明形式会怎样?

var foo = {};
console.log(window.foo === foo); // true or false?

let bar = {};
console.log(window.bar === bar); // what about this?

最佳答案

but if I declare a var at the top level of a module, does it become a global property of the window object? What if I use let or const or any of the new declaration forms added in es6?

在这两种情况下,答案是否定的。仅为 script 的声明创建全局属性(如果 CanDeclareGlobalVar 返回 true)(第 15.1.8 部分)。但是模块中的 VarDeclaredNamesVarScopedDeclarations 都属于该模块(准确地说是 ModuleItem)——而不是整个脚本。

否则,将数据封装在模块中的整个想法(以便每个模块都可以通过已建立的export/import 例程与应用程序的其余部分进行通信)将被浪费掉。

关于javascript - 变量声明是否成为 ecmascript 6 模块中窗口的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25815666/

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