【发布时间】:2016-09-30 00:23:25
【问题描述】:
刚刚在最近的question I was looking at 中遇到了以下内容,我很好奇为什么var name 和const name 提供不同的输出。运行下面的 sn-ps 看看我的意思。
如果它与 name 作为 window 对象属性有关,那么 重新声明/定义 name 和 const 应该会导致我认为的错误。但是,在下面的示例中,const 允许将 name 重新声明为数组,而 var 不允许。
var name = ['one', 'two', 'three', 'four', 'five'];
for (var i=0; i < name.length; i++){
document.write(name[i] + '<br>');
}
const name = ['one', 'two', 'three', 'four', 'five'];
for (var i=0; i < name.length; i++){
document.write(name[i] + '<br>');
}
那么,为什么const 允许我劫持 window.name 属性并将其重新分配为数组?但是var 不允许重新分配(仍为默认string)?还是我只是看错了?
【问题讨论】: