作用域
作用域就是变量的有效范围。 在一定的空间里可以对数据进行读写操作,这个空间就是数据的作用域
1、全局作用域: 不在函数内部或者大括号里的就是是全局作用域,全局作用域下声明的变量可以在程序的任意位置访问
2、局部作用域:ES6之前,函数作用域就是局部作用域,在函数内部可访问到,而对于函数外部是无法访问的。
3、块级作用域:ES6 之后,凡是代码块就可以划分变量的作用域,叫做块级作用域
作用域链
当需要使用一个变量的时候,首先会在当前作用域去寻找,如果找不到,就去它的父级作用域找,以此类推,形成作用域链。
所以我们可以得知:
* 作用域链前端始终都是当前执行的代码所在环境的变量对象
* 作用域链中的最后一个对象始终都是全局执行环境的变量对象
如何延长作用域链?
1、try - catch 语句的 catch 块;会创建一个新的变量对象,包含的是被抛出的错误对象
的声明
2、with 语句。with 语句会将指定的对象添加到作用域链中。
var person = {