这些语句| |{}在这个javascript代码中的含义是什么
我刚开始学习javascript,正在阅读模块模式 我一直在看这一页:无法理解| |{}语句的含义 有很多地方编写了这段代码:(UTIL | |{}) 有人能解释一下这些话的意思和他们在做什么吗 我认为| |意味着或——但在这种情况下我不太确定 下面是本文结论部分的代码。第二行和倒数第二行是令我困惑的代码示例这些语句| |{}在这个javascript代码中的含义是什么,javascript,or-operator,Javascript,Or Operator,我刚开始学习javascript,正在阅读模块模式 我一直在看这一页:无法理解| |{}语句的含义 有很多地方编写了这段代码:(UTIL | |{}) 有人能解释一下这些话的意思和他们在做什么吗 我认为| |意味着或——但在这种情况下我不太确定 下面是本文结论部分的代码。第二行和倒数第二行是令我困惑的代码示例 var UTIL = (function (parent, $) { var my = parent.ajax = parent.ajax || {}; my.get = functio
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));
这意味着:如果
|
之前的对象为空,请使用新的空对象{}
在此处阅读有关运算符的更多信息:如果未设置,则用于定义变量。 您可以这样做,以确保有一个值集 例如:
function iHaveParameters(param1, param2) {
param1 = param1 || {} //empty object
param2 = param2 || "This should be a string"
}
当然,如前所述,它只会在第一个变量为null时调用第二个值
在您的例子中,它实际上只是在未设置变量的情况下设置变量,这意味着如果您包含了3000次脚本,那么变量仍然只会定义一次。这种方法可能需要加载函数,例如{}是声明空对象的一种简短方法,与使用[]do声明空数组的方法相同
var my=parent.ajax=parent.ajax |{}
表示如果对象parent.ajax
存在,则将其设置为值。如果不是,则改为设置一个空对象。如前所述,它是一个空JavaScript对象
我想不太明显的是你为什么要这么做。一个常见的原因是,如果对象恰好为null
或未定义
,则使代码安全。考虑传递对象的示例,并希望访问它的属性:
function myFunc(obj) {
console.log(obj.name);
}
这很好,除非obj
是未定义的
,在这种情况下,您的代码将崩溃
更安全的方法通常是:
function myFunc(obj) {
console.log((obj || {}).name);
}
现在,如果obj
是未定义的
,则会创建一个新的空对象。获取它的.name
是安全的,只需返回未定义的
这显然是一个过于简化的示例,但该技术被广泛用于使代码更短、更易于阅读(与到处放置if
语句相比,测试和分支更少)。@Juhana,谢谢。在我的回答中,它确保了UTIL对象不会每次都被重新创建。例如,如果您将其包装在一个函数中,您可能需要加载该函数,在某些情况下会占用大量cpu,但避免在再次请求时重新加载。感谢所有有用的答案。我现在明白了。