5

在 Javascript 中可以如下声明多个变量吗?

var foo = bar = "Some value";
4

1 回答 1

5

除非您知道您正在创建一个全局变量(无论如何,这通常被认为是不好的做法),否则这是不行的。

如果您来自 Java 之类的语言,那么很自然地会执行以下操作:

int foo = bar = 0;

变量foobar都将在当前范围内初始化为值 0。但在 Javascript 中:

var foo = bar = 0;

将在当前范围内创建变量foo和一个全局变量bar


问题

在理解我的错误之前,我正在调试我正在编写的游戏大约一个小时。我有一个像这样的代码:

function Player() {
    var posX = posY = 0;
}

function Bullet() {
    var posX = posY = 0;
}

var player = new Player;
var bullet = new Bullet;

变量posY是全局变量。一个对象上任何改变posY值的方法也会改变另一个对象的值。

发生了什么:每次一个子弹对象垂直移动通过​​屏幕(改变它应该是它自己的posY),玩家对象将被传送到子弹的 Y 坐标。

通过简单地将变量声明分离为:

var posX = 0;
var posY = 0;
于 2015-09-14T14:13:08.130 回答