-2

我在 JavaScript 中声明变量有一个小问题。在文件的开头,var send;我通过. 所以它喜欢:$(document).ready(function()setTimeOutabort()

var send;
$(document).ready(function(){
//somecode
    function loop(){
        send = $.getScript('index.php', function(data){
            //somecode
        }
    }
//somecode
}
function one_more(){
    send.abort();
}

问题是send.abort();我收到:

类型错误:发送未定义

发送.中止();

我哪里错了?

4

4 回答 4

1

由于send仅在loop()函数中定义,它只会在被调用时定义(并且仅在文档就绪处理程序的范围内调用)

我假设你在定义one_more()之前打电话。send

出于说明的目的,您上面所拥有的基本上是

var send;
send.abort();

一个快速的解决方法是send使用适当命名的方法进行定义,例如

var send = send || {abort: function(){}};

这将停止错误,但你真的应该弄清楚什么时候执行和定义

于 2012-10-02T06:37:23.273 回答
1

据我所知,这段代码是否错误:

function loop(){
    send = $.getScript('index.php', function(data){
        //somecode
    }
}

应该是这样的:

function loop(){
    send = $.getScript('index.php', function(data){
        //somecode
    });
}

见);在发送结束时 = ....

于 2012-10-02T06:40:11.743 回答
0

变量的赋值send发生在 ready 函数内部。当您到达send.abort()指令时,该ready功能尚未执行。

于 2012-10-02T06:41:21.057 回答
-1

定义window.varname将使变量成为全局变量。我认为window就像所有变量的根,因为你可以调用window.window.window.window.window.window.window.window它,它会返回window

于 2012-10-02T06:44:48.583 回答