例如,如果我要格式化我的代码如下
<script type="text/javascript">
var timeout;
function auto() {
$.ajax({
url: "functions/ajax.php",
data: "func=auto",
type: "GET",
dataType: "json",
success: function(data){
$.each(data.search, function (i, v) {
console.log('Success ' + v);
});
},
error: function (jqXHR, textStatus, errorThrown){
console.log('Error ' + jqXHR);
}
});
}
function start() {
timeout = setTimeout('auto()', 2000);
}
function stop(){
clearTimeout(timeout);
}
</script>
我的var timeout
不是由一个值定义的,这有关系吗?由于实际超时甚至没有处理,它只运行一次函数auto()
,然后停止
首先,不要在setTimeout中使用引号(我不确定,但我相信调用eval()
),只需通过引用传递函数:setTimeout(auto, 2000)
;
其次,JavaScript是一种动态类型语言,这意味着变量没有固定的类型,它们可以根据环境变化而变化,因此你的代码是完全有效的。
最后,如果你不打算在超时计数时中止它,你不需要清除它,因为它在执行后会消失。