作用域
什么事作用域
- 变量或者函数可以被调用(引用)的范围
作用域
- 全局作用域
- 函数作用域:必须等函数执行之后,其中的变量才有意义,变量只能在函数内部调用,函数外部不能使~~
如果是隐式变量声明,函数执行后会变成全局变量,函数内外都可以被调用 - 块级作用域 ES6引入了
let
和const
关键字,和var
关键字不同,在大括号中使用let
和const
声明的变量存在于块级作用域中。在大括号之外不能访问这些变量
词法作用域/静态作用域
- 变量的作用域是在变量定义时就确定了,而不是在执行的时候确定的,所以看变量的作用域,看他定义时的环境就可以了,
不用管他是 怎么调用的。
作用域链
- 当js在使用一个变量的时候,首先会尝试在当前作用域下去寻找这个变量,如果没有找到,再找他的上层作用域,以此类推知道找到这个变量或者到全局作用域,没找到就会在全局范围内隐式声明该变量(非严格模式下)或是直接报错