闭包函数被调用之后,会创建一个执行环境及作用域链.函数被执行完之后就会被释放掉. // 闭包 function test() { let b = "b"; return () => b; } let t = test() console.log(t()) // 访问内部变量 示例一打印出的结果是多少? function test() { var n = 4; function add() { n++; console.log(n); } return { n: n, add: add }; } var result = test(); // 返加一个对象 var result2 = test(); // 同上 result.add(); // 调用闭包函数,访问内部变量. 输出 5 result.add(); // 输出 6 console.log(result.n); // 4 result2.add(); // 5 示例二打印出的结果是什么? function test() { var arr = []; for (var i = 0; i < 10; i++) { arr[i] = function() { console.log(i); // 输出 10 }; } return arr; } var myArr = test(); for (var j = 0; j < 10; j++) { myArr[j](); }
示例三打印出的结果是什么? function test() { var arr = []; for (let i = 0; i < 10; i++) { // let arr[i] = function() { console.log(i); }; } return arr; } let myArr = test(); for (let j = 0; j < 10; j++) { myArr[j](); // 输出 0 到 9 }
示例四打印结果是多少? for (var i = 0; i < 10; i++) { (j => { setTimeout(function() { console.log(j);// 0 ~ 9 }, 1000); })(i); // 立即执行函数 传参 } 这只是创建并执行了10个函数,每个函数都传递了个 |
|