12

検討:

> function hello(what) {
.     what = "world";
.     return "Hello, " + arguments[0] + "!";
. }
> hello("shazow")
"Hello, world!"

whatの値を変更すると の値が変わるのはなぜarguments[0]ですか?

4

1 に答える 1

13

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!"
于 2012-04-19T02:52:29.660 に答える