作用域是可以访问变量的集合,个人喜欢把它理解为变量的生存环境
JS里的作用域可以分为 : 1.全局作用域 ** 2.局部作用域** 3.块级作用域
这里简单说明一下:
全局作用域 是 0级作用域 在全局作用域中设置的变量就被称之为 全局变量
局部作用域 只要我们设置里一个函数 则函数 { } 内部 就是我们的 局部作用域 ,我们每设置一个新的函数,实际上就开辟了一个新的局部作用域
块级作用域 在ES6中只要 { } 没有和函数相结合,那就是我们的块级作用域
重点:
var 在 单独的 { } 中声明的变量,是一个全局变量
let 在 单独的 { } 中声明的变量 , 是一个局部变量
也就是说在块级作用域下,var声明的变量是全局变量 , let声明的变量是局部变量
example:
var b = 2
let a = 0
}
console.log(b)
console.log(a)
而在局部作用域下 var、let 声明的变量都是局部变量
function xx(){
var a = 0
}
xx()
console.log(a)
最后,无论是块级作用域还是局部作用域,省略变量前面的let或者var就会变成一个全局变量