【发布时间】:2015-12-10 14:04:31
【问题描述】:
在Javascript中可以像下面这样声明多个变量吗?
var foo = bar = "Some value";
【问题讨论】:
-
您可能会遇到“范围问题”,请查看Issues with this approach 以获得详细说明
标签: javascript variable-initialization
在Javascript中可以像下面这样声明多个变量吗?
var foo = bar = "Some value";
【问题讨论】:
标签: javascript variable-initialization
除非您知道您正在创建一个全局变量(无论如何,这通常被认为是不好的做法),否则这是不行的。
如果您来自 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),player对象将被传送到 bullet 的 Y 坐标。
通过简单地将变量声明分隔为:
var posX = 0;
var posY = 0;
【讨论】:
var posX = 0, posY = posX;