検討:
> function hello(what) {
. what = "world";
. return "Hello, " + arguments[0] + "!";
. }
> hello("shazow")
"Hello, world!"
what
の値を変更すると の値が変わるのはなぜarguments[0]
ですか?
検討:
> function hello(what) {
. what = "world";
. return "Hello, " + arguments[0] + "!";
. }
> hello("shazow")
"Hello, world!"
what
の値を変更すると の値が変わるのはなぜarguments[0]
ですか?
what
「 の値を変更すると の値が変更されるのはなぜarguments[0]
ですか?」
そのように設計されているからです。仮パラメータは、arguments オブジェクトのインデックスに直接マップされます。
これは、 strict モードを使用しておらず、環境でサポートされている場合を除きます。次に、一方を更新しても他方には影響しません。
function hello(what) {
"use strict"; // <-- run the code in strict mode
what = "world";
return "Hello, " + arguments[0] + "!";
}
hello("shazow"); // "Hello, shazow!"