【发布时间】:2018-11-07 06:43:04
【问题描述】:
我在下面有一些代码。我希望它可以正确记录a 和b,但结果,它会将a 记录为1,b 未定义错误:
Uncaught ReferenceError: b is not defined
function foo(){
var a = 1
let b = 2
(function bar() {
console.log(a)
console.log(b)
}())
}
console.log(foo());
如果我更改代码以将 bar 作为函数声明,一切都很好
function foo(){
var a = 1
let b = 2
function bar() {
console.log(a)
console.log(b)
}
bar()
}
console.log(foo());
我知道一些关于函数作用域、块作用域、提升的事情。但我真的不明白会发生什么使b '未定义'
以上所有代码均在 Chrome 66 的 devTools 中运行
【问题讨论】: