標籤:閉包 TE UNC 調用 art NPU 實現 lin highlight
* 實現函數 makeClosures,調用之後滿足如下條件:
1、返回一個函數數組 result,長度與 arr 相同
2、運行 result 中第 i 個函數,即 result[i](),結果與 fn(arr[i]) 相同
input:
[1, 2, 3], function (x) { return x * x; }
function makeClosures(arr, fn) { var result = []; for (var i = 0; i < arr.length; i++) { (function(i) { result.push(function() { return fn(arr[i]); }); })(i); } return result;}var arr = [1, 2, 3];var fn = function (x) { return x * x; }var result = makeClosures(arr, fn);console.log(result); // [f,f, f, f]console.log(result[1]()); // 4console.log(fn(arr[1])); // 4
已知函數 fn 執行需要 3 個參數。請實現函數 partial,調用之後滿足如下條件:
1、返回一個函數 result,該函數接受一個參數
2、執行 result(str3) ,返回的結果與 fn(str1, str2, str3) 一致
input: var sayIt = function(greeting, name, punctuation) { return greeting + ‘, ‘ + name + (punctuation || ‘!‘); }; partial(sayIt, ‘Hello‘, ‘Ellie‘)(‘!!!‘);
output: Hello, Ellie!!!
function partial(fn, str1, str2) {return function(str3) {return fn(str1, str2, str3);}}var sayIt = function(greeting, name, punctuation) {return greeting + ‘, ‘ + name + (punctuation || ‘!‘);};console.log(partial(sayIt, ‘Hello‘, ‘Ellie‘)(‘!!!‘) );
javascript 閉包 closure