javascript变量的作用域一直都是js程序员最困扰的难点之一。先通过概要来过一遍涉及到的知识。
一、全局变量
全局变量包含:1.在函数体外定义的变量
2.在函数体内部定义的无var变量(很多人很容易的误认为在函数体内定义的所有变量都是局部变量,这里需特变注意!)
全局变量可以在任何位置被调用。
二、局部变量
局部变量包含:1.在函数内部使用Var声明的变量
2.函数的参数变量
局部变量只能在当前函数体内部被调用。
三、优先级(符合就近原则)
1.局部变量高于同名全局变量
2.参数变量高于全局变量
3.局部变量高于同名参数变量
四、特性
1.忽略块级作用域
2.全局变量是全局对象的属性
3.局部变量时调用对象的属性
4.作用域链:1)内层函数可访问外层函数局部变量
2)外层函数不能访问内层函数局部变量
5.生命周期:1)全局变量:除非被显示删除,否则一直存在
2)局部变量:自声明起至函数运行完毕或被显示删除
3)回收机制:标志清楚+引用计数</