JavaScript: почему изменение переменной аргумента изменяет массив `arguments`? Рассмотрим: > function hello(what) { . what = "world"; . return "Hello, " + arguments[0] + "!"; . } > hello("shazow") "Hello, world!" Почему изменение значения what меняет значение arguments[0]? Ответ 1 "Почему изменение значения what меняет значение arguments[0]?" Потому что так оно и работает. Формальные параметры напрямую отображаются в индексы объекта arguments. То есть, если вы не находитесь в строгом режиме, и ваша среда поддерживает его. Тогда обновление одного не влияет на другое. function hello(what) { "use strict"; // <-- run the code in strict mode what = "world"; return "Hello, " + arguments[0] + "!"; } hello("shazow"); // "Hello, shazow!"
Ответ 1 "Почему изменение значения what меняет значение arguments[0]?" Потому что так оно и работает. Формальные параметры напрямую отображаются в индексы объекта arguments. То есть, если вы не находитесь в строгом режиме, и ваша среда поддерживает его. Тогда обновление одного не влияет на другое. function hello(what) { "use strict"; // <-- run the code in strict mode what = "world"; return "Hello, " + arguments[0] + "!"; } hello("shazow"); // "Hello, shazow!"