最近看了下javascript高级程序设计(第三版)之后,对闭包重新理解了一下,闭包就是一个可以访问函数作用域的一个函数。根据下面的案例可以理解下。
//为了使循环的每一项都能依次返回对应的数字,这时可以使用闭包。
function createFunctions() {
var result = new Array();
for (var i = 0; i < 10; i++) {
result[i] = function (num) {
return function () {
return num;
};
}(i);
}
return result;
}
// 以上用到了立即执行函数,按我个人理解,每个立即执行函数执行之后,里面任何的局部变量都被销毁。所以说传进去的i都是独立的。所以说以上还可以这样写。
function createFunctions() {
var result = new Array();
for (var i = 0; i < 10; i++) {
result[i] = (function (num) {
return num;
})(i);
}
return result;
}
//另外本人也有一定的困惑就是
//这样写不报错
const test = function(name) {
} ()
// 这样报错
function(name) {
} ()