Jquery:undefined不是一个函数

时间:2013-08-09 11:23:16

标签: javascript jquery

我有一个代码,当我尝试运行时,我调用该函数时得到错误。我不知道他发生了什么?帮助PLZ ......

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   
                }
        }); 

    });

3 个答案:

答案 0 :(得分:6)

它是关于在声明它之前调用jq()函数。

jq未定义,因为它尚未声明......!

更新(@David Barker建议)

如果声明命名函数而不是匿名函数,整个代码将起作用。

由于匿名函数是在运行期间创建的,因此在执行赋值之前它不可用。

相反,由于命名函数是在 parse 时间内声明的,因此即使在调用它之后声明它也可以使用它。

匿名函数示例

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!

答案 1 :(得分: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();
    }); 

});

答案 2 :(得分:0)

首先你声明一个函数然后调用她,因为javascript一个接一个地读取,当你调用函数jq()时它仍然没有被声明..

'对不起我的英语'