gpt4 book ai didi

javascript - var something = somethingElse.obj = somethingElse.obj || {} - 这是做什么用的?

转载 作者:行者123 更新时间:2023-11-29 15:04:46 31 4
gpt4 key购买 nike

抱歉奇怪的标题...不知道还有什么方法可以查询这样的语言功能。

我正在阅读 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 和我只能假设如果没有设置某些东西(falsenull 等)它会将其评估为 bool 表达式并设置为其他值(请确认)

这就是我迷路的地方。我只能假设设置 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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com