Советы по инициализации переменной 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;