关于Javascript变量初始化的建议

时间:2015-09-14 14:13:08

标签: javascript variable-initialization

Javascript中是否可以声明多个变量,如下所示?

var foo = bar = "Some value";

1 个答案:

答案 0 :(得分:5)

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

如果你来自像Java这样的语言,那么做以下的事情是很自然的:

int foo = bar = 0;

两个变量 foo bar 都将在当前范围内初始化为值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 值的一个对象上的任何方法也会为另一个对象更改它。

发生了什么:每次 bullet 对象垂直移动屏幕(改变它应该是它自己的 posY )时,播放器对象将被传送到 bullet 的Y坐标。

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

来解决
var posX = 0;
var posY = 0;