js閉包使用及建議

js的閉包核心問題就是變量的作用域,在一個閉包(一個函數)內部作用域與外部作用的關連問題。舉個例子

var i = 6;
var test = function(){
    var i = 5;
    return i;
}

以上的test相對外部來講就是一個閉包了,這個閉包裏面的變量i在自己的作用域範圍。這裏的返回值是5;
再來一個例子

var i = 6;
var test = function(){
    var i = 5;
    return function(){
        var i = 9;
        return i;
    }
}

test函數中又有一個返回值的閉包,這個裏面的值是9,相信大家都已經看出來了,閉包{}內的作用域是不受外面影響的。如果是傳值的話則返回傳入的參數,在閉包中很好的保護起來。

var test = function(){
    var i = 5;
    var handle = setTimeout(function(){
        return i;
    }, 1000);
}

建議不要深度的使用閉包,那樣的代碼非常難以維護以及理解。

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