【发布时间】:2019-09-30 02:36:39
【问题描述】:
我试图解释 javascript 提升的问题,但我无法解释 b 的情况。
b = 50没有修改全局变量b?
这是块级作用域的原因吗?
环境
铬 77
{
a = 50
function a() {}
}
console.log(a) // 50
console.log(b) // undefined
{
console.log(b) // f b () {}
function b() {}
b = 50
console.log(b) // 50
}
console.log(b) // ƒ b () {}
我认为b 和a 一样是 50。但它是一个函数。
【问题讨论】:
-
{}的位置对于 ..{}内部的 console.log(b) 与外部不同 - 并不是这些信息有帮助! -
{} 内的
console.log(b)是正常的。在function b () {}之前是f b() {},在b = 50之后是50 -
行为不一致。如果你在 Safari 中运行它,你会得到不同的结果。不过,Chrome 和 Firefox 似乎产生了相同的结果。
标签: javascript hoisting