0

JavaScript の初心者として、複数の関数を使用しようとしているときにグローバル変数を使用できません。コードは次のとおりです-

<script type="text/javascript">

        /* Global Variable example! Not working as one function called onClick. */

        function make_name_variable () { var y_name = document.getElementById('y_name').value; }
        function make_date_variable () { var y_date = document.getElementById('y_date').value; }
        function make_month_variable () { var y_month = document.getElementById('y_month').value; }
        function make_year_variable () { var y_year = document.getElementById('y_year').value; }


        function test(){
                    /*var y_name = document.getElementById('y_name').value;
                    var y_date = document.getElementById('y_date').value;
                    var y_month = document.getElementById('y_month').value;
                    var y_year = document.getElementById('y_year').value;*/

                    document.getElementById('Result').innerHTML = y_date + y_month +  y_year;


                    return true;
            }

        function compute () {

            make_name_variable ();
            make_date_variable ();
            make_month_variable ();
            make_year_variable ();
            test(); 
           }
    </script>

として使用:-

<input type="submit" value="Submit" onclick="compute ()">

期待どおりの結果を得ることができません。ページ全体でデータを使用したいので、すべての機能が使用できるようにグローバルに維持したいと考えていました。従来の方法でもグローバルに設定できませんでした。関数内で変数を宣言すると、望ましい結果が得られます。あなたは私が完全な初心者であることを認識している必要があるので、物事を成し遂げる他の方法があれば教えてください. どういうわけか、これを解決するためのより良い、より簡単な方法があるに違いないと感じています。

前もって感謝します。:)

PS: ここで最初の質問です。私の間違いを許してください。

4

2 に答える 2

1

キーワードはvar、現在のスコープで変数を宣言します。関数内で宣言するvarと、そこにのみ存在します。MDNドキュメントは一般的に非常に優れています。

于 2012-05-29T07:49:34.770 に答える
-2

Javascriptでグローバル変数を宣言する良い方法は、ブラウザでアプリケーションを実行していない場合は、windowをその環境に固有のグローバルオブジェクトに置き換えますwindow.globalVariableNamevar globalVariableName;

最初の宣言は、グローバル スコープまたは関数内のどこにいても機能します。

グローバル変数を宣言する悪い方法は

globalVariableName = 'Foo';

それは明らかな宣言ではなく、単に var を忘れているように見えるからです。

最後に、globalVariables は使用するのに適していません。したがって、それらを慎重に使用してください。そのように言う別のスクリプトでまだ使用されていないかどうかを確認してください

if(window.globalVariableName === undefined) window.globalVariableName = 'Bar';

詳細については、JavaScript パターン Stoyan Stefanov の最初の章を読んでみてください。

更新: アンドレアス・ロスバーグ

たとえば、Definitive Javascript Guide の David Flanigan は、4.6.1 でグローバル変数とは何か、グローバル オブジェクトのプロパティであると述べています。これは MDN でも確認できます。

悪いスタイルについては、同意できますが、部分的にしか同意できません。このような変数宣言に単一変数パターンを使用しない場合

(function(){ 
    var someVar1 = '', 
        someVar2 = null, 
        someVar3 = undefined; 
})();

あなたのコードは同じように悪く見えます。

EcmaScript の次のバージョンについては、参照が少し短すぎます。this厳密なJavascriptでは異なる方法で処理されることだけを読んだことがあります。私があなたを正しく理解していれば、この例はあなたが言及しているものです

function someFunction() 
{
    //'use strict';
    console.log(this); //Window or undefined
    console.log(window);// Window or Window
}
someFunction();

「use strict」のコメントを外します。最初のログでは undefined になりますが、2 番目のログではまだ Window になります。

于 2012-05-29T08:07:21.300 に答える