javascript - "var cc = cc = cc || {};"行在Cocos2D中有什么作用?

标签 javascript cocos2d-iphone

我试图找到使用这行代码的原因

var cc = cc = cc || {};

在 Cocos2D JavaScript 库中,例如 this地方,但我找不到任何合理的理由。就设置默认值而言,单一赋值是可以的,但双重赋值呢?有人知道这是什么原因吗?

最佳答案

代码等同于:

var cc;
cc = cc || {};
cc = cc;

这显然是一个错误。

更新。我对这个主题做了更多研究,这里有一件有趣的事情:

每当您使用 var 关键字时,它都会在当前范围内创建一个新变量,除非它已经存在于当前范围。基本上这段代码:

var cc = 1;
function test() {
    var cc = cc || {};
    return cc;
}
test();

将始终生成 {},无论 cc(在全局范围内)的初始值是多少。特别是这段代码:

var cc = [expression];

相当于:

var cc;
cc = [expression];

尽管 var cc; 创建新变量只有当 cc 在当前作用域中不存在时。

更新 2. 哪个操作优先是令人困惑的,因为在 OP 的代码中,两个 = 符号实际上并不相同。第一个表示变量声明,因为它前面有一个 var 关键字。第二个是任务。这就是为什么

var x = y = z;

相当于

var x;
y = z;
x = z;

(注意 var 关键字只适用于 x )而

x = y = z;

相当于

y = z;
x = z;

(请注意操作 y=z 返回 z,这并不重要(很明显它可能是 y)但它是值得注意的是)

结论:左侧的变量声明总是在右侧求值和右侧赋值给左侧之前。

关于javascript - "var cc = cc = cc || {};"行在Cocos2D中有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15405362/

相关文章:

javascript - Angular 2 router.navigate

javascript - 如何发送多个 XMLHttpRequest

iphone - 使用 iPhone 应用程序中的过渡将对象移动到触摸

ios - 修改Cocos2D滑动菜单网格添加额外的BUY ME按钮

iphone - 如何获取世界坐标上的点击位置?

javascript - 渲染阻塞 react.js 和 pageSpeed/page rank

javascript - 如何在 ".length"属性中使用动态选择器?

javascript - 使用 Jquery 检查 Javascript 对象中是否存在某些内容

ios - 如何卸载cocos2d模板?

ios - 健康栏的 CCProgressNode 不工作