【发布时间】:2023-02-15 19:31:48
【问题描述】:
我在我的 html 中写了一些在 <script> 标签之间的 JS:
console.log('exist in ? scope', foo !== undefined)
console.log('exist in window scope', window.foo !== undefined)
console.log('exist in document scope', document.foo !== undefined)
console.log('exist in globalThis scope', globalThis.foo !== undefined)
<script>
class FooBar {};
const foo = new FooBar()
</script>
在我的 JS 开发控制台中,我可以找到 FooBar 和 foo。
我希望他们在window、document、globalThis,并且能够使用window.foo访问,但事实并非如此。
在哪个范围内保留这些变量?
【问题讨论】:
-
为什么
document例如可以访问不在文档中的变量,也就是 html 页面?我不明白你为什么这么期待 -
脚本标签中的代码放在全局范围内。 What is the global scope of <script> tag? - 不是所有东西都添加到 window 对象或者真的很拥挤是一件好事。
-
那么什么是全局范围呢?控制台如何读取它?
-
检查this answer 以查看变量范围和对象属性之间的区别。
标签: javascript