这是我得到的代码,但我不知道这两行是什么意思:
o[arr[i]] = o[arr[i]] || {};
o = o[arr[i]];
完整代码:
var GLOBAL={};
GLOBAL.namespace=function(str){
var arr = str.split("."), o=GLOBAL;
for(i=(arr[0]=="GLOBAL") ? 1 : 0; i<arr.length; i++){
o[arr[i]] = o[arr[i]] || {};
o = o[arr[i]];
}
};
GLOBAL.namespace("A.Dog");
// GLOBAL.A = {};
// GLOBAL.A.Dog = {};
GLOBAL.A.Dog.name = "diudiu";
alert(GLOBAL.A.Dog.name)
最佳答案
逐步分解以使其更清晰:
o[arr[i]] = o[arr[i]] || {};
等同于:
var x = arr[i];
o[x] = o[x] || {};
等同于:
var x = arr[i];
if (o[x] == undefined) {
o[x] = {};
}
模式A = B || DEFAULT_VALUE
是一个习惯用法,它使用了 ||
运算符的短路特性。在 javascript 中,||
运算符不返回 true
或 false
而是返回第一个非假值或 false
。因此,如果第一个变量不是假的,它会计算出第一个变量的值,否则它会计算出第二个变量的值。
关于javascript - 这两行是什么意思 : o[x] = o[x] || {}; o = o[x];,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8409573/