首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么意思: qq = qq || {}?

什么意思: qq = qq || {}?
EN

Stack Overflow用户
提问于 2011-06-18 02:42:28
回答 4查看 1.6K关注 0票数 10

我下载了一个javascript脚本,第一行中的一行是:

代码语言:javascript
复制
 qq = qq || {};

什么意思?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-18 02:43:34

它检查qq中是否有预先存在的truthy value,否则(||)将其设置为空对象({})。

本质上,它的目的是快速地确保对qq的任何进一步引用都不会是未定义的,这样你就可以检查对象的属性,而不会因为变量最初不是有效对象而导致脚本中断。

票数 23
EN

Stack Overflow用户

发布于 2011-06-18 02:43:48

解释:

代码语言:javascript
复制
    qq = qq || {};
// ^^ is equal to iself, but if it does not exist, 
//       then it is equal to an empty object

例如:

代码语言:javascript
复制
for(var i = 0; i < 5; i++){
    qq = qq || {};
    qq[i] = 'something!';
}

小提琴:http://jsfiddle.net/maniator/dr5Ra/

票数 4
EN

Stack Overflow用户

发布于 2012-06-26 22:01:14

到目前为止,这里的答案忽略了重要的一点。操作员说脚本以

代码语言:javascript
复制
qq = qq || {};

如果是这样,并且还没有在任何地方声明qq (全局范围内没有var qq,没有window.qq = ...),那么该代码将抛出ReferenceError。它将不仅仅是默认的qq

相反,如果代码是:

代码语言:javascript
复制
var qq = qq || {};

这将是非常不同的。它会这样做:

  1. var qq部件将在脚本中的任何分步代码之前进行处理。如果已经有一个全局qq变量,那么它将是一个no-op。如果没有,它会用初始值创建一个全局qq变量,一步一步地执行到该行,赋值的右侧如下所示:

代码语言:javascript
复制
- 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大不相同。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6390297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档