我刚刚开始使用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));
答案 0 :(得分:1)
如果未设置变量,则用于定义变量。 您可以这样做以确保设置值!
例如:
function iHaveParameters(param1, param2) {
param1 = param1 || {} //empty object
param2 = param2 || "This should be a string"
}
当然,如上所述,它只会在第一个变量为空时调用第二个值。
在您的情况下,它实际上只是在未设置变量时设置变量,这意味着如果您将变量包含3000次,变量将仅在避免CPU时定义。这样您可能需要加载函数,例如
答案 1 :(得分:1)
如前所述,它是一个空的JavaScript对象。
我猜是什么为什么你会这样做。一个常见原因是,如果对象恰好是null
或undefined
,则可以使代码安全。考虑一个传递对象并希望访问它的属性的示例:
function myFunc(obj) {
console.log(obj.name);
}
没问题,除非obj
是undefined
,否则您的代码会崩溃。
更安全的方法通常是:
function myFunc(obj) {
console.log((obj || {}).name);
}
现在,如果obj
为undefined
,则会创建一个新的空对象。获取.name
是安全的,只需返回undefined
。
这显然是一个过于简化的示例,但该技术被广泛用于使代码更短且更易于阅读(与在任何地方放置if
语句相比,测试和分支更少)。
答案 2 :(得分:0)
这意味着:如果||
之前的对象为null,请使用新的空对象{}
。
在此处详细了解运营商:Is there a "null coalescing" operator in JavaScript?
答案 3 :(得分:0)
{}是一种声明空对象的简短方法,就像使用[]声明一个空数组一样。
var my = parent.ajax = parent.ajax || {};
表示如果对象parent.ajax
存在,则将其设置为值。如果没有,请改为设置一个空对象。