关于Javascript变量初始化的建议

关于Javascript变量初始化的建议,javascript,variable-initialization,Javascript,Variable Initialization,在Javascript中,可以如下声明多个变量吗 var foo = bar = "Some value"; 除非您知道您正在创建一个全局变量(无论如何,这通常被认为是不好的做法),否则它是不好的 如果您来自Java这样的语言,那么很自然地会执行以下操作: int foo = bar = 0; 变量foo和bar都将在当前范围内用值0初始化。但在Javascript中: var foo = bar = 0; 将在当前范围内创建变量foo和一个全局变量栏 问题 在理解我的错误之前,我在一个

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

var foo = bar = "Some value";

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

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

int foo = bar = 0;
变量foo和bar都将在当前范围内用值0初始化。但在Javascript中:

var foo = bar = 0;
将在当前范围内创建变量foo和一个全局变量栏


问题 在理解我的错误之前,我在一个游戏上调试了大约一个小时。我的代码如下:

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;

... 或
var posX=0,posY=posX@Pointy漂亮,简洁的替代品!您可能会遇到“范围界定问题”,请查看详细解释