<分区>
刚刚在最近的 question I was looking at 中遇到以下内容,我很好奇为什么 var name
和 const name
提供不同的输出。运行下面的代码片段以了解我的意思。
如果它与 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
)?还是我只是以错误的方式看待它?