0

を使用するかどうかにかかわらず、変数を宣言するときの違いを知りたいですvar。私は次のコードを使用しました:

<body>
    <h1>New Web Project Page</h1>
    <script type="text/javascript">
        function test(){
            a = "hello";
            var b="world";
        }
        alert(a);
            alert(b);


    </script>
</body>

アラートが機能しない理由とvar、JavaScriptで使用するかどうかにかかわらず、変数を宣言するときの違いは何ですか。

4

4 に答える 4

4

alertの場合はb正しいスコープに存在せずa、関数を呼び出していないためにまだインスタンス化されていないため、は機能しません。test

var呼び出されたスコープに対してローカルな変数を作成します。varを使用しない場合は、グローバル変数を作成します。

function fn ( ) {
    var x = 0; // this variable is local to the function fn

    y = 10; // this variable is global and can be accessed
            // from anywhere after you call fn
}

一般的に言えば、グローバル変数を使用したくない正当な理由がない限り。つまり、を使用してすべての変数を作成する必要がありますvar。変数を必要な範囲にのみ配置すると、コードの理解と保守が容易になります。また、「魔法の変数」の問題を軽減するのにも役立ちます。表示されたばかりの変数があるが、どこから来たのか明確にわからない場合。また、JavaScriptでは、存在しない変数がその場で作成されるため、コードのデバッグが容易になります。ただし、ローカル変数varとjsLintなどのツールのみを使用する場合は、変数名のつづりを間違えると、コードが正しく機能しなくなるという問題が発生することはありません。

于 2012-04-17T04:59:41.377 に答える
2

なしで変数を宣言すると、変数varがグローバルになるため、誰でもアクセスできます。ただし、アラートが機能しない理由は、呼び出しをtest()行っていないab、割り当てられていないためです。test(アラートの前に)呼び出すbと、未定義になり、ahello を読む必要があります。

変数とスコープに関する優れたリソース。

于 2012-04-17T05:00:25.477 に答える
1

関数を呼び出していませんtest()。がvar除外されると、変数はグローバルになるため、すべてのコードで使用できます。

于 2012-04-17T04:59:54.293 に答える
1

「var」の使用に関するまったく同じ質問がここで回答されています

アラートが機能しない理由については、「test()」関数を呼び出していないためです。作成されたばかりです...何もしません。変数を設定するには、それを呼び出す必要があります。

于 2012-04-17T05:02:54.387 に答える