3

一部のJavaScript関数に問題があり、適切に配置されたalert()が私を驚かせる何かを明らかにするまで、約1時間頭をかいてしまいました。ある関数が別の関数のローカル変数を変更していたようです。簡単なテストスクリプトを作成しました。

function first() {
    msg = "1111";

    second();

    alert(msg);
    }


function second() {
    msg = "2222";
    }

first()を呼び出すと、「1111」というアラートボックスが表示されるはずですが、代わりに「2222」が表示されます。second()がfirst()に属するローカル変数にどのように影響しているのですか?私は何かが足りないのですか、それともこれはバグですか?

Firefox12.0を使用しています。

4

1 に答える 1

5

変数は、varステートメントが使用されている場合にのみローカルになります。

var msg = "1111";

それ以外の場合、値はグローバルスコープにエスケープされます。

于 2012-06-23T21:11:14.037 に答える