带有const vs var的Javascript全局范围[重复]

Posted

技术标签:

【中文标题】带有const vs var的Javascript全局范围[重复]【英文标题】:Javascript global scope with const vs var [duplicate] 【发布时间】:2018-03-13 05:09:40 【问题描述】:
var name = 'John';

console.log(this.name, document.name, window.name, name);

const meme = "Bruce";

console.log(this.meme, document.meme, window.meme, meme);

输出:

John undefined John John
undefined undefined undefined "Bruce"

var 和 const 的全局范围是否不同?我认为唯一的区别是 const 是不可变的。

【问题讨论】:

medium.com/javascript-scene/… + ***.com/a/40775470/2008111 一件小事:const 不是不可变的(例如你可以做array.push()),但它不可重写(你不能重新分配变量) const 不适用于旧版浏览器(例如 IE10),var 有效。 @caramba 那篇文章似乎与 OP 的问题没有任何关系 【参考方案1】:

是的,window 范围和使用 var 定义的变量不同于使用 constlet 声明的变量范围。

另见Is it possible to delete a variable declared using const?、Why does .then() chained to Promise.resolve() allow const declaration to be reassigned?

【讨论】:

以上是关于带有const vs var的Javascript全局范围[重复]的主要内容,如果未能解决你的问题,请参考以下文章

[基础]JavaScript中对var/let/const的理解和总结

为啥许多javascript示例仍然使用'var'而不是'const'和'let'? [关闭]

Javascript var/let/const 变量初始化

JavaScript中声明变量var和let/const的区别讲解

javascript 让const var

Javascript 对象解构赋值是不是使用 const、let 或 var?