我有以下JavaScript代码;
var foo = (function() {
//Private vars
var a = 1;
return {
//Public vars/methods
a: a,
changeVar: function () {
a = 2;
}
}
})();
现在我不确定公共变量/方法的语法是如何工作的? 你能否解释如何“回归”变量/方法使它们成为公众?
谢谢。
答案 0 :(得分:1)
变量foo
的值实际上是此函数返回的值。请注意最后一行()
,表示立即评估此函数。通过计算函数并将其返回值赋给变量,您可以隐藏本地(函数)范围内的变量,以便在该范围之外无法访问它们。只能返回返回对象上的成员,但由于内部的任何函数形成了具有外部作用域的闭包,因此您仍然可以使用本地(隐藏)变量。
这方面的一个例子是隐藏一些本地状态,只允许通过以下方法访问它:
var foo = (function() {
//Private vars
var a = 1;
return {
//Public methods
getVar: function () {
return a;
},
setVar: function (val) {
a = val;
}
}
})();
答案 1 :(得分:0)
好的,您已在匿名函数中返回了一个对象,这意味着该对象已分配给foo
。因此,您可以访问对象的属性,如foo.a
或foo.changeVar
,但您可以继续在函数范围内存在私有变量。没有更具体的问题就无济于事。