分为两种:函数作用域、 块级作用域
局部作用域里声明的变量:就只能在它所在的局部作用域里访问,出了作用域就无法访问
函数作用域:
声明一个函数,函数内的作用域就是函数作用域,这是局部的
块级作用域:
一个{}
(不包含对象)包出来的空间,就是块级作用域,是局部的
var
声明的变量认函数作用域
, let
声明的变量认 块级作用域
例:
{
let num = 10
}
console.log(num) // 报错,因为let声明的变量认块作用域
{
var num = 10
}
console.log(num) // 得到10,因为var不认块作用域,只认函数作用域
function fn() {
// 这就是函数作用域开的局部作用域
let num = 10
console.log('fn里访问', num)
}
fn()
console.log(num) // 也不可以访问
function fn2 () {
// 也不可以访问
console.log(num)
}
fn2()