如何在JS中定义全局变量

时间:2012-10-02 06:34:25

标签: javascript jquery ajax abort

我在JavaScript中声明变量时遇到了一个小问题。在文件的开头我通过var send;声明了一个变量,之后我有了$(document).ready(function()我有setTimeOut的递归循环,其中我分配了一个变量Ajax请求并在它之后在文件的最后我有一个abort()。所以它喜欢:

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

问题在于send.abort();我收到了:

  

TypeError:send is undefined

     

send.abort();

我哪里错了?

4 个答案:

答案 0 :(得分:1)

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

我假设您在定义one_more()之前调用send

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

var send;
send.abort();

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

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

这会阻止错误,但是你应该在执行和定义事情时解决问题

答案 1 :(得分:1)

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

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

应该是这样的:

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

见);在send = ....

结束时

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

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