这些陈述是什么意思||这个javascript代码中的{}

时间:2015-04-29 09:57:24

标签: javascript or-operator

我刚刚开始使用javascript并正在阅读模块模式。

我一直在看这个页面:http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html并且无法弄清楚什么是|| {}语句意思是。

编写此代码的地方有很多:(UTIL || {}));

任何人都可以解释这些陈述的含义以及他们在做什么吗?

我假设||意味着或 - 但在这种情况下我不太确定。

以下是本文结论的代码。第二行和倒数第二行是令我困惑的代码示例。

var UTIL = (function (parent, $) {
var my = parent.ajax = parent.ajax || {};

my.get = function (url, params, callback) {
    // ok, so I'm cheating a bit :)
    return $.getJSON(url, params, callback);
};

// etc...

return parent;
}(UTIL || {}, jQuery));

4 个答案:

答案 0 :(得分:1)

如果未设置变量,则用于定义变量。 您可以这样做以确保设置值!

例如:

function iHaveParameters(param1, param2) {
   param1 = param1 || {} //empty object
   param2 = param2 || "This should be a string"
}

当然,如上所述,它只会在第一个变量为空时调用第二个值。

在您的情况下,它实际上只是在未设置变量时设置变量,这意味着如果您将变量包含3000次,变量将仅在避免CPU时定义。这样您可能需要加载函数,例如

答案 1 :(得分:1)

如前所述,它是一个空的JavaScript对象。

我猜是什么为什么你会这样做。一个常见原因是,如果对象恰好是nullundefined,则可以使代码安全。考虑一个传递对象并希望访问它的属性的示例:

function myFunc(obj) {
    console.log(obj.name);
}

没问题,除非objundefined,否则您的代码会崩溃。

更安全的方法通常是:

function myFunc(obj) {
    console.log((obj || {}).name);
}

现在,如果objundefined,则会创建一个新的空对象。获取.name是安全的,只需返回undefined

这显然是一个过于简化的示例,但该技术被广泛用于使代码更短且更易于阅读(与在任何地方放置if语句相比,测试和分支更少)。

答案 2 :(得分:0)

这意味着:如果||之前的对象为null,请使用新的空对象{}

在此处详细了解运营商:Is there a "null coalescing" operator in JavaScript?

答案 3 :(得分:0)

{}是一种声明空对象的简短方法,就像使用[]声明一个空数组一样。

var my = parent.ajax = parent.ajax || {};表示如果对象parent.ajax存在,则将其设置为值。如果没有,请改为设置一个空对象。