对不起,奇怪的标题...不知道如何查询这种语言。
当我遇到此示例代码时,我正在阅读有关module patterns的信息。它发生在示例模块模式的闭包中,用于在“宽松地扩展”模块时在不同文件之间维护私有(private)状态。
编辑-包含其余模块代码
var MODULE = (function (my) {
var _private = my._private = my._private || {},
_seal = my._seal = my._seal || function () {
delete my._private;
delete my._seal;
delete my._unseal;
},
_unseal = my._unseal = my._unseal || function () {
my._private = _private;
my._seal = _seal;
my._unseal = _unseal;
};
// permanent access to _private, _seal, and _unseal
return my;
}(MODULE || {}));
我已经尝试将其分解,但并没有增加。
我开始从右到左看。现在,我已经看到了
var someVar = something || somethingElse
beore,并且我只能假设如果未设置某些内容(false
,null
等),它会将其评估为 bool(boolean) 表达式并设置为其他值(请确认)。那就是我迷路的地方。我只能假定设置my._private的目的是将其设置为空对象(如果不存在的话)...但这只是一个推测。
在此处设置my._private的目的是什么?
最佳答案
请记住,Javascript中的每个语句都会求值,甚至是赋值(求值就是所赋值)。
foo = bar = 3;
是相同的
foo = (bar = 3);
这与
bar = 3;
foo = 3;
在您的情况下,如果
my._private
当前为假值,则将其设置为{}
,然后将该值也分配给本地_private
变量关于javascript - var something = somethingElse.obj = somethingElse.obj || {}-这是做什么用的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4368436/