В каком порядке указаны переменные, назначенные в Javascript?
По-видимому, это идентично в моей консоли Firebug:
var x = "A", y = x;
x + y === "AA";
и
var x = y, y = "A";
x + y === "AA";
Является ли это стандартным поведением ECMAScript, что порядок не играет роли в разделенных запятыми назначениях var
?
Изменить: "Тайна" решена. Сначала я проверил первый пример, затем очистил консоль и запустил вторую. Однако в это время уже были определены y
и x
. Если вы запустите JSFiddle, предоставленный Дэвидом Томасом, вы всегда получаете "undefinedA". Дело урегулировано.
Ответы
Ответ 1
var x = y;
вызовет исключение, если y
не определено.
Однако объект window является контекстом по умолчанию для интерпретаторов Javascript, встроенных в браузеры. Если вы ранее выдавали:
y = "A";
Тогда вы фактически назначили "A"
на window.y
, поэтому var x = y;
станет действительным и назначит window.y
на x
.