js相關語法基礎(6)閉包

高階函數除了可以接受函數作爲參數以外,還可以把函數作爲結果值返回。

來實現一個對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));

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章