我下载了一个javascript脚本,第一行中的一行是:
qq = qq || {};什么意思?
发布于 2011-06-18 02:43:34
它检查qq中是否有预先存在的truthy value,否则(||)将其设置为空对象({})。
本质上,它的目的是快速地确保对qq的任何进一步引用都不会是未定义的,这样你就可以检查对象的属性,而不会因为变量最初不是有效对象而导致脚本中断。
发布于 2011-06-18 02:43:48
解释:
qq = qq || {};
// ^^ is equal to iself, but if it does not exist,
// then it is equal to an empty object例如:
for(var i = 0; i < 5; i++){
qq = qq || {};
qq[i] = 'something!';
}小提琴:http://jsfiddle.net/maniator/dr5Ra/
发布于 2012-06-26 22:01:14
到目前为止,这里的答案忽略了重要的一点。操作员说脚本以
qq = qq || {};如果是这样,并且还没有在任何地方声明qq (全局范围内没有var qq,没有window.qq = ...),那么该代码将抛出ReferenceError。它将不仅仅是默认的qq。
相反,如果代码是:
var qq = qq || {};这将是非常不同的。它会这样做:
var qq部件将在脚本中的任何分步代码之前进行处理。如果已经有一个全局qq变量,那么它将是一个no-op。如果没有,它会用初始值创建一个全局qq变量,一步一步地执行到该行,赋值的右侧如下所示:- If `qq` has a "falsey" value (`0`, `""`, `undefined`, `false`, `NaN`, or `null`), the expression `qq || {}` evalutes to `{}`.
- If `qq` has a "truthy" value (anything not falsey), the expression evalutes to `qq`.(有关更多详细信息,请访问 。)
将右侧的结果赋值给qq.
var让和大不相同。
https://stackoverflow.com/questions/6390297
复制相似问题