这行代码是什么? (构建/设计js web应用程序)

时间:2013-11-26 19:10:56

标签: design-patterns web-applications

这里有一个奇怪的问题...... 我试图更好地理解为网络应用程序构建js代码的一般程度。

我常常在代码启动时看到类似这一行的内容(但由于某种原因,我找不到真实的例子):

var SOME = SOME || {}

或者类似的东西..我现在很模糊,但我确信这是一种常见的模式,如果你们中的某个人已经习惯了网络应用程序就会识别它..

我的问题是:我很确定代码行会启动某种模式。你认识到了吗?你能告诉我这种模式是什么吗?

2 个答案:

答案 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

JSFiddle example