Советы по инициализации переменной Javascript

Это нормально в Javascript, чтобы объявить несколько переменных, как показано ниже?

var foo = bar = "Some value";

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, также изменит его для другого объекта.

Что произошло: каждый раз, когда объект пули перемещался по экрану вертикально (изменяя свою позицию), объект игрока телепортировался в координату Y пули.

Решается простым разделением объявления переменной:

var posX = 0;
var posY = 0;
Другие вопросы по тегам