此问题已在此处有答案:
JavaScript hoisting explanation(4个答案)
昨天关门了。
var a = 1
function b() {
a = 20
return
function a() {}
}
b()
console.log(a)
我以为输出会是20,但它的1?函数B的执行上下文将从GEC访问变量a并更新其值imo。为什么会这样呢?
此问题已在此处有答案:
JavaScript hoisting explanation(4个答案)
昨天关门了。
var a = 1
function b() {
a = 20
return
function a() {}
}
b()
console.log(a)
我以为输出会是20,但它的1?函数B的执行上下文将从GEC访问变量a并更新其值imo。为什么会这样呢?
1条答案
按热度按时间3vpjnl9f1#
function declarations声明了一个共享当前作用域中函数名称的变量(就像
var
一样),并且是hoisted。因此,
function a
在function b
内部创建了一个局部变量a
,并且是您要覆盖的那个 * 那个 * 变量。有些人喜欢使用带有显式变量声明的箭头函数。这会产生一个错误,而不是让你感到惊讶的行为。