高階函式除了可以接受函式作為引數以外,還可以把函式作為結果值返回。
來實現乙個對array的求和。傳統方法。
function sum(arr))
}console.log(sum([1,2,3,4]));
不返回求和的結果,而返回求和的函式。
function lazy_sum(arr));
}return sum;
}var f = lazy_sum([1,2,3]);
console.log(f());
當我們呼叫lazy_sum時,返回的不是求和的結果,而是求和函式。呼叫函式f,才會真正計算。
當lazy_sum返回函式sum時候,相關引數和變數都儲存在返回的函式中,這種稱為閉包。
閉包詳解:
es6新增了一種新的函式,叫做箭頭函式
x => x * x; 相當於
function (x)
var res = (x) =>
console.log(res(5));
JS基礎 閉包
注 自由變數是既不是在本地宣告又不作為引數傳遞的一類變數。function a return b var b a b hello closure 定義乙個函式a a中定義了函式b a中返回b 執行a 把a的返回結果賦值給變數b 執行b 閉包會在父函式外部,改變父函式內部變數的值。所以,如果你把父函式...
JS基礎 變數 閉包
1.變數的作用域 變數可以是全域性的,也可以是區域性的,在談論全域性變數和區域性變數之間的區別時,我們其實是在討論變數的作用域 scope i.全域性變數 可以在指令碼的任何位置被引用。作用域是整個指令碼。ii.區域性變數 只存在於對它作出宣告的那個函式的內部,在那個函式外部是無法引用它的。作用域僅...
JS筆記六(JS閉包 運動相關 ES6相關)
閉包 閉包的第一層含義 訪問函式 冰箱 內部的變數 大象 可以通過在該函式定義另乙個函式 冰箱門,冰箱入口 來訪問。通過在f1函式內部定義函式f2,從而可以訪問到f1內部定義的變數num.這是最簡單的閉包形式。js閉包用途 1 乙個是可以讀取函式內部的變數 2 另乙個就是讓這些變數的值始終保持在記憶...