Объект меняется, переменная нет
Неожиданно в процессе отладки кода обнаружил вещь, о которой, будь у меня профильное образование, узнал бы курсе на 2.
Проще сначала написать код:
var x, y, z;
function(){
if (...) {
z = x;
} else {
z = y;
}
function(){
return result
}
z = result;
}
Результат: х = ? y = ?
Тут x или y по-прежнему будут объявленными, но неопределёнными. Сделаем alert -получим пустые значения. Теперь определим x, y как объекты:
var x = [], y = [], z;
function(){
if (...) {
z = x;
} else {
z = y;
}
function(){
return result
}
z.push(result);
}
Результат: x = result или y = result Теперь если вывести через alert значение x или y, будет выведено их единственное значение, присвоенное с помощью третьей переменной. Таким образом, в JavaScript переменная не может быть ссылкой на другую переменную, но может быть ссылкой на объект. Поиграться можно тут: http://jsfiddle.net/DmwsG/