1.函数
- 闭包
(1)函数的执行依赖于变量作用域,这个作用域是在函数定义时决定的,而不是函数调用时决定的。
(2)在函数体内,局部变量的优先级高于同名的全局变量。如果在函数内声明的一个局部变量或者函数中带有的变量与全局变量重名,函数内,全局变量就会被局部变量所覆盖。
(3)定义一个函数时,实际上是保存一个作用域链。每一段代码都有一个与之相关联的作用域链,作用域链上至少有两个对象,一个是定义函数参数和局部变量的对象,第二个是全局变量。要查找的变量x的值就会从链上第一个对象开始查找,对象如果对应有x属性 ,就是查找的变量的值,如果没有对象包含属性x,就抛出异常。
(4)函数对象可以通过作用域链相互关联起来,函数体内部的变量都可以保存在函数作用域内,这种特性叫闭包。