JavaScript中的作用域和块作用域是如何工作的



我是JavaScript的新手,正在努力学习Object和for。。循环中。

然后我在浏览器中尝试了这个代码:

const dad = {
gender: 'male',
age: 53
}
for(let prop in dad){
console.log(prop, dad[prop]);
}

它显示了一次结果,但当我再次运行时,控制台显示:

Uncaught SyntaxError: Identifier 'dad' has already been declared

我试着在谷歌上搜索并通读了范围和块范围,但仍然没有真正理解

当我尝试用外部作用域阻塞代码(将代码捕获到{}中(或将代码放入函数中时,它工作得很好。

请帮我理解这个

控制台确实在全局范围内运行代码片段。当您第一次运行const dad时,它确实声明了一个全局变量。现在,您可以在后续代码中参考dad。当你第二次尝试运行它时,它会抱怨它已经被声明了——就像你写了一样

const dad = 1;
const dad = 2;

如果要重新启动,请重新加载页面。

最新更新