闭包
//调用func时需要outer的localVal,outer不能被销毁
function outer() {
var localVal = 30;//闭包可以封装变量,此变量是局部的,内函数可以访问,是私有的
return function() {
return localVal;
}
}
var func=outer();
func();//30
作用域
1.for,while等循环内定义的变量是全局变量,没有块级作用域
2.函数作用域
3.eval(“var a=1;”);
ES3执行上下文
1.每执行一次函数就有一个新的执行上下文
2.变量对象存储每个上下文的变量、函数声明、函数参数
3.String,isNaN是在全局上下文里 初始化的东西
4.VO按照如下顺序填充:
4.1、函数参数
4.2、函数声明(发生冲突会覆盖,后面覆盖前面的参数)
4.3、变量声明(发生冲突忽略,保留前面的)