我在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();
我哪里错了?
答案 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
。