javascript 本地和全局范围[重复]

sr4lhrrt  于 2023-06-28  发布在  Java
关注(0)|答案(1)|浏览(76)

此问题已在此处有答案

JavaScript hoisting explanation(4个答案)
昨天关门了。

var a = 1

function b() {
  a = 20
  return

  function a() {}
}
b()
console.log(a)

我以为输出会是20,但它的1?函数B的执行上下文将从GEC访问变量a并更新其值imo。为什么会这样呢?

3vpjnl9f

3vpjnl9f1#

function declarations声明了一个共享当前作用域中函数名称的变量(就像var一样),并且是hoisted
因此,function afunction b内部创建了一个局部变量a,并且是您要覆盖的那个 * 那个 * 变量。
有些人喜欢使用带有显式变量声明的箭头函数。这会产生一个错误,而不是让你感到惊讶的行为。

var a = 1

function b() {
  a = 20
  return

  const a = () => {}
}
b()
console.log(a)

相关问题