以下javascript语法是什么意思?

use*_*929 1 javascript syntax jquery plugins

我正在学习开发javascript/jquery插件,我注意到其中许多都有以下语法:

var pluginName = window.pluginName || {};
Run Code Online (Sandbox Code Playgroud)

我很难理解这意味着什么,特别是OR花括号部分.如果有人能够在代码的上下文中阐明这意味着什么,那就太棒了.

eku*_*ela 6

这意味着:

var pluginName;
if (window.pluginName) {
    pluginName = window.pluginName;
} else {
    pluginName = {};
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators


pb2*_*b2q 5

如果window.pluginNamenullundefined(或其他类似于假的,false或者0通常要检查的意图undefined),则该变量pluginName将被设置为指向空对象.

该行依赖于OR来进行短路:如果第一个操作数是一个值(false或nullor undefined),则表达式的结果将是第二个操作数:{}这是一个空对象.

我们的想法是将变量初始化为某个(可能是空的)对象.

在javascript 模块模式中使用具有空对象的这种短路的另一个实例.这是关于模块模式一个很好的教程,但特别是,请参阅松散增强部分.以下是该部分的示例模块定义:

var MODULE = (function (my) {
   // add capabilities...

   return my;
}(MODULE || {}));
Run Code Online (Sandbox Code Playgroud)

在该示例中,代码将通过调用立即调用的函数表达式在全局命名空间中定义新模块(具有属性/函数集合的对象):第一次执行定义模块的函数时,它将是传递一个空对象,将添加功能(属性,函数).