JavaScript 中的作用域和块作用域是如何工作的?
How does scope and block scoping work in JavaScript?
我是 JavaScript 的新手,正在尝试了解对象和 for..in 循环。
然后我在浏览器中尝试了这段代码:
const dad = {
gender: 'male',
age: 53
}
for(let prop in dad){
console.log(prop, dad[prop]);
}
它显示了一次结果,但是当我再次 运行 时,控制台显示:
Uncaught SyntaxError: Identifier 'dad' has already been declared
我已尝试进行一些 Google 搜索并通读有关范围和块范围的内容,但仍未真正理解
当我尝试用外部作用域阻止代码(将代码抓取到 {}
中)或将代码放入函数中时,效果很好。
请帮助我理解这一点
控制台在全局范围内执行 运行 代码片段。当您第一次使用 运行 const dad
时,它会声明一个全局变量。您现在可以在后续代码中引用 dad
。当你第二次尝试 运行 时,它会抱怨说它已经被声明了——就像你写了
const dad = 1;
const dad = 2;
如果您想重新开始,请重新加载页面。
我是 JavaScript 的新手,正在尝试了解对象和 for..in 循环。
然后我在浏览器中尝试了这段代码:
const dad = {
gender: 'male',
age: 53
}
for(let prop in dad){
console.log(prop, dad[prop]);
}
它显示了一次结果,但是当我再次 运行 时,控制台显示:
Uncaught SyntaxError: Identifier 'dad' has already been declared
我已尝试进行一些 Google 搜索并通读有关范围和块范围的内容,但仍未真正理解
当我尝试用外部作用域阻止代码(将代码抓取到 {}
中)或将代码放入函数中时,效果很好。
请帮助我理解这一点
控制台在全局范围内执行 运行 代码片段。当您第一次使用 运行 const dad
时,它会声明一个全局变量。您现在可以在后续代码中引用 dad
。当你第二次尝试 运行 时,它会抱怨说它已经被声明了——就像你写了
const dad = 1;
const dad = 2;
如果您想重新开始,请重新加载页面。