函数作用域

115 阅读1分钟

概念

使用var声明的变量,其作用域为整个函数内部,无论声明在函数的哪个位置。

在函数作用域外无法访问到var声明的变量

例子

function example() {
  var x = 10;
  console.log(x); // 10(内部可访问)
}
example();
console.log(x); // Error: x is not defined(外部不可访问)

关于var的变量提升

例子如下:

function example3() {
  console.log(a); // undefined
  var a = 5;
  console.log(a); // 5
}

function example4() {
  console.log(b); // error:Cannot access 'b' before initialization
  let b = 10;
}
  • var声明的变量会提升到函数顶部。相当于下面的效果
function example3() {
  var a // 被提升到函数顶部
  console.log(a); // undefined
  a = 5;
  console.log(a); // 5
}
  • let/const存在暂时性死区。 let 和 const 声明的变量在作用域内会“绑定”到整个块级作用域,但在声明语句执行前不可访问。这个区域称为暂时性死区。