JavaScript call function - JavaScript闭包是如何工作的?

Js execute / javascript / function / variables / scope / closures

对于那些对闭包的概念(例如函数、变量等)有一定了解,但对闭包本身并不了解的人,你将如何解释JavaScript闭包?

28 revs, 21 users 17%



Answer #1

闭包经常用于创建具有一些隐藏的私有数据的函数(但并不总是如此)。

var db = (function() {
    //创建一个隐藏的对象,该对象将保存数据
    //从外部无法访问。
    var data = {};

    //创建一个函数,该函数将提供对数据的某些访问。
    return function(key, val) {
        if (val === undefined) { return data[key] } // 得到
        else { return data[key] = val } // 放
    }
    //我们正在调用匿名的周围函数,
    //返回上面的内部函数,它是一个闭包。
})();

db('x')    //->未定义
db('x', 1) //将x设置为1
db('x')    // -> 1
//无法访问数据对象本身。
//我们可以获取或设置单个它。