js相關語法基礎(6)閉包
阿新 • • 發佈:2019-01-06
高階函式除了可以接受函式作為引數以外,還可以把函式作為結果值返回。
來實現一個對array的求和。傳統方法。
function sum(arr){
return arr.reduce(function(x,y){
return x + y;
})
}
console.log(sum([1,2,3,4]));
不返回求和的結果,而返回求和的函式。
function lazy_sum(arr){ var sum = function() { return arr.reduce(function(x,y){ return x + y; }); } return sum; } var f = lazy_sum([1,2,3]); console.log(f());
當我們呼叫lazy_sum時,返回的不是求和的結果,而是求和函式。呼叫函式f,才會真正計算。
當lazy_sum返回函式sum時候,相關引數和變數都儲存在返回的函式中,這種稱為閉包。
閉包詳解:https://blog.csdn.net/dovlie/article/details/76339244
ES6新增了一種新的函式,叫做箭頭函式
x => x * x; 相當於
function (x) {
return x * x;
}
var res = (x) => { if(x > 0) return x * x; else return - x * x; } console.log(res(5));