2

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

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

这段代码写在很多地方:(UTIL || {}));

谁能解释这些陈述的含义以及它们在做什么?

我假设 || 表示 OR - 但在这种情况下不太确定。

这是文章结尾的代码。第二行和倒数第二行是让我感到困惑的代码示例。

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

4 回答 4

1

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

例如:

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

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

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

于 2015-04-29T10:00:23.710 回答
1

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

我猜不太明显的是你为什么要这样做。一个常见的原因是,如果对象恰好是null或,则使您的代码安全undefined。考虑传递一个对象并想要访问它的属性的示例:

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

没关系,除非objis undefined,在这种情况下你的代码会崩溃。

更安全的方法通常是:

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

现在 if objis undefinedthen 创建一个新的空对象。获得.nameof that 是安全的,并且会简单地返回undefined

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

于 2015-04-29T10:10:36.503 回答
0

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

在此处阅读有关运算符的更多信息:JavaScript 中是否存在“空值合并”运算符?

于 2015-04-29T10:00:09.657 回答
0

{} 是声明空对象的一种简短方式,与使用 [] 声明空数组的方式相同。

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

于 2015-04-29T10:01:39.280 回答