这里有一个奇怪的问题...... 我试图更好地理解为网络应用程序构建js代码的一般程度。
我常常在代码启动时看到类似这一行的内容(但由于某种原因,我找不到真实的例子):
var SOME = SOME || {}
或者类似的东西..我现在很模糊,但我确信这是一种常见的模式,如果你们中的某个人已经习惯了网络应用程序就会识别它..
我的问题是:我很确定代码行会启动某种模式。你认识到了吗?你能告诉我这种模式是什么吗?
答案 0 :(得分:3)
基本上
var SOME = SOME || {}
表示将local SOME
(即var SOME)设置为指向名为SOME
的现有全局变量(即= SOME),如果它不是NULL。如果全局SOME为NULL,则将本地SOME设置为新对象{}
这是一种快捷的说法
var SOME = {};
if (window.SOME != NULL) {
SOME = window.SOME
}
编辑:
好的,通常在使用模块时使用此模式。例如
Foo.js
window.appModule = {};
Bar.js
var appModule = appModule || {};
appModule.newFunction = function () { //.... Whatever. };
window.appModule = appModule;
基本上我们想要使用现有的appModule实例,或者如果它尚不存在则创建一个新实例。这里我们通过向它添加一个新函数来扩展现有的模块实例。实际上,这种模式只是确保创建对象实例的一种方便方法(如果它尚不存在)。
这不是一个主要的模式,只是一个方便的捷径。
编辑:
刚刚找到这个例子:
var MODULE = (function (my) {
// add capabilities...
return my;
}(MODULE || {}));
注意底部使用的模式。同样,这是一种方便的方式,可以使用现有的MODULE
或新增的另一个,然后将其传递给function (my)
。
答案 1 :(得分:1)
避免某些人为空。
它是短路的。基本上,如果SOME为NULL,它将变为{},因此它非常适合初始化。
var myVar = valueThatCouldBeNull || WhateverIWantToInitInSaidCase