gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:03:34 27 4
gpt4 key购买 nike

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

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com