function count() { var arr = []; for (var i=1; i<=3; i++) { arr.push((function (n) { return function () { return n * n; } })(i)); } return arr;}var results = count();var f1 = results[0];var f2 = results[1];var f3 = results[2];f1(); // 1f2(); // 4f3(); // 9請問count函數的返回值是 n*n嗎?results拿到的是count里的哪段代碼?這段代碼看的頭好大啊,自動執行函數不是(function(){})嗎?為什么還有一個(i)??arr.push((function (n) {return function (){return n * n;}})(i));(function(){})())這個也是自動執行函數的樣式嗎?
一個閉包的問題
莫回無
2019-02-05 17:38:20