【问题标题】:Advice on Javascript variable initialization [duplicate]关于 Javascript 变量初始化的建议 [重复]
【发布时间】:2015-12-10 14:04:31
【问题描述】:

在Javascript中可以像下面这样声明多个变量吗?

var foo = bar = "Some value";

【问题讨论】:

标签: javascript variable-initialization


【解决方案1】:

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

如果您来自 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;
  • @Pointy 不错,简洁的替代方案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 2011-03-19
  • 2016-12-12
相关资源
最近更新 更多