听说你还不理解JavaScript闭包
闭包(Closure) 闭包是一个函数和词法环境的组合,函数声明在这个词法环境中 词法作用域 看下面一个例子 function init() { var name = 'Mozilla'; // name是局部变量 function displayName() { // displayName()是内部函数,一个闭包 alert(name); // 使用外部函数声明的变量 } displayName(); } init(); init() 创建了一个局部变量 name 和一个函数 displayName() 。函数displayName()是一个已经定义在init()内部的函数,并且只能在函数init()里面才能访问得到。函数displayName()没有自己的局部变量,但由于内部函数可以访问外部函数变量,displayName()可以访问到声明在外部函数init()的变量name,如果局部变量还存在的话,displayName()也可以访问他们。 闭包 看下面一个例子 function makeFunc() { var name = 'Mozilla'; function displayName() { alert(name); } return displayName; } var myFunc = makeFunc(); myFunc();