0

私はJSコードを次のように持っています:

    $(function () { //line-1
     if(window.location.search.length >1){
    //doSomething ;
     areFieldsSet(); //call this function
    } //end of if 

    var areFieldsSet = function(){
    //do something
    }
    //do many things
   } // end of line-1 function

現在、質問のタイトルで説明されているように、areFieldsSet 関数を参照しようとするとエラーが発生します。どこが間違っていますか?

4

2 に答える 2

1

Javascript コードは 2 つのフェーズで動作します。

最初のフェーズ - すべての変数をvarキーワード (宣言のみで初期化はしない) で宣言し、すべての関数宣言 ( function F() {} ) を宣言します。

第二段階 - 実行を開始します。

コードには宣言ではなく関数式があるため、その関数をインラインで呼び出そうとすると

  $(function () { //line-1
     if(window.location.search.length >1){
    //doSomething ;
     areFieldsSet(); //call this function
    } //end of if 

    var areFieldsSet = function(){
    //do something
    }
    //do many things
   }

JavaScript エンジンは、areFieldsSetという名前の変数があることを認識していますが(最初のフェーズで宣言されているため)、関数への割り当ては、コードが

var areFieldsSet = function(){
        //do something
        }

したがって、関数のように呼び出そうとすると、JavaScript はそれが関数であることを認識しないため、エラーが発生します。

于 2016-05-10T10:02:03.393 に答える