Пожалуйста, держитесь подальше от этого шаблона назначения, даже если вы хотите, чтобы все переменные указывали на один и тот же объект.
Фактически, только первая из них будет объявление переменной , остальные - просто присвоения возможно необъявленным идентификаторам !
Присвоение значения необъявленному идентификатору (он же необъявленное присвоение ) настоятельно не рекомендуется, если идентификатор не найден в цепочке областей действия, будет создана переменная GLOBAL.Например:
function test() {
// We intend these to be local variables of 'test'.
var foo = bar = baz = xxx = 5;
typeof foo; // "number", while inside 'test'.
}
test();
// Testing in the global scope. test's variables no longer exist.
typeof foo; // "undefined", As desired, but,
typeof bar; // "number", BAD!, leaked to the global scope.
typeof baz; // "number"
typeof xxx; // "number"
Более того, 5-й строгий режим ECMAScript запрещает подобные назначения.В строгом режиме присвоение, сделанное для необъявленного идентификатора, вызовет исключение TypeError
, чтобы предотвратить неявные глобальные переменные.
В отличие от этого, вот что мы видим, если написано правильно:
function test() {
// We correctly declare these to be local variables inside 'test'.
var foo, bar, baz, xxx;
foo = bar = baz = xxx = 5;
}
test();
// Testing in the global scope. test's variables no longer exist.
typeof foo; // "undefined"
typeof bar; // "undefined"
typeof baz; // "undefined"
typeof xxx; // "undefined"