2
刚刚在最近的question I was looking at中遇到以下内容,我很好奇为什么var name
和const name
提供不同的输出。运行下面的代码片段以查看我的意思。const vs var和window.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
)?或者我只是以错误的方式看待它?
也应该注意,出于同样的原因,'let'就像'const'一样。 – Barmar
Gotcha。我知道'let',但不知道'const'遵循相同的约束。每天学些新东西。 – Marcus