В каком порядке переменные присваиваются в Javascript? - PullRequest
12 голосов
/ 11 августа 2011

Очевидно, это идентично в моей консоли Firebug:

var x = "A", y = x;
x + y === "AA";

и

var x = y, y = "A";
x + y === "AA";

Это стандартное поведение ECMAScript, что порядок не играет роли в разделенных запятыми var присвоениях?

Редактировать: «Тайна» раскрыта. Сначала я протестировал первый пример, затем очистил консоль и запустил второй. Однако в это время y и x уже были определены. Если вы запускаете JSFiddle, предоставленный Дэвидом Томасом, вы всегда получаете «undefinedA». Дело решено.

1 Ответ

6 голосов
/ 11 августа 2011

var x = y; вызовет исключение, если y не определено.

Однако, объект window является контекстом по умолчанию для интерпретаторов Javascript, встроенных в браузеры. Если вы ранее выдали:

y = "A";

Тогда вы фактически присвоили "A" на window.y, поэтому var x = y; становится действительным и присваивает window.y на x.

...