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);
}

建议不要深度的使用闭包,那样的代码非常难以维护以及理解。

你可能感兴趣的:(node.js,闭包)