0

以下のコードがあり、実行しようとすると、関数を呼び出すときにエラーが発生します。これは彼のハプニングなのだろうか?助けてください...

jQuery(document).ready(function($) {
        //load config file 
        $.getScript(baseURl+"/wsj/wconf.js", function(data, textStatus, jqxhr) {
            console.log(data); // it is ok 

                jq();  // Uncaught TypeError: undefined is not a function 
                //_cusApp.ini();  //Uncaught TypeError: Cannot call method 'ini' of undefined 

                var _cusApp = {
                        ini: function (inc) {
                            console.log('ini'); 
                        },
                };

                var jq = function ( ){
                    $(document).height(); // jquery not availble here   
                }
        }); 

    });
4

3 に答える 3

6

jq()宣言する前に関数を呼び出すことです。

jqまだ宣言されていないため、未定義です...!

更新 (@David Barker の提案)

無名関数の代わりに名前付き関数が宣言される場合、コード全体が機能します。

無名関数は実行時に作成されるため、割り当てが実行されるまで使用できません。

反対に、名前付き関数は解析時に宣言されるため、呼び出し後に宣言されていてもコードで使用できます。

無名関数の例

myFunction(); // Wrong, it's undefined!

var myFunction = function() {};

myFunction(); // OK, now is declared and it can be invoked

名前付き関数の例

myFunction(); // As the function has been already parsed, it is available!

function myFunction() {};

myFunction(); // OK!
于 2013-08-09T11:26:00.337 に答える
3

そのはず

jQuery(function($) {
    //load config file 
    $.getScript(baseURl+"/wsj/wconf.js", function(data, textStatus, jqxhr) {
        console.log(data); // it is ok 

        //these two variable declaration shoule happen before their usage
        var _cusApp = {
            ini: function (inc) {
                console.log('ini'); 
            },
        };

        var jq = function ( ){
            $(document).height(); // jquery not availble here   
        }

        jq();
        _cusApp.ini();
    }); 

});
于 2013-08-09T11:25:09.690 に答える
0

最初に関数を宣言してから彼女を呼び出します。これは、javascript が行ごとに 1 行ずつ読み取るためです。関数 jq() を呼び出すと、まだ宣言されていませんでした..

「私の英語でごめんなさい」

于 2013-08-09T13:07:50.327 に答える