【JavaScript】关于 setInterval() 调用函数方法的一次实验

实验主题:

setInterval() 方法是 JS 中比较常用的一个方法。setInterval() 方法可以按照指定的周期 ( 毫秒 ) 来调用函数方法或计算表达式。

setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

注:1000 毫秒 = 1秒

setInterval() 语法:

setInterval(code, millisec, lang)
参数 描述
code 必须。要调用的函数或要执行的代码串。
millisec 必须。周期性的执行或调用 code 之间的时间间隔。
lang 可选。JScript | VBScript | JavaScript

setInterval() 返回值:number值,是一个可以传递给 Window.clearInterval() 从而取消对 code 的周期性执行的值。测试代码:

var id = setInterval("foo1()",100);
alert(typeof(id));

setInterval() 作为 JavaScript 的一个计时事件,可以使代码在一个设定的时间内反复的执行多次,而不是在函数被调用后立即执行,这就是我们的计时事件。JavaScript 的另一个计时事件是 setTimeout(),他们两个都是 HTML DOM Window 对象的方法。

因为是 Window 的对象方法,所以加前缀 " window. " 对调用没有什么影响。另外,clearInterval() 也是 Window 的对象方法。

实验测试:

var foo1 = new Function("return alert('!!!')");//正常运行,而且刚开始时不会执行
setInterval(foo1,2000);//注意:Function不能写成function
var foo2 = new Function("alert('!!!')");//正常运行,而且刚开始时不会执行
setInterval(foo2,2000);
var foo3 = new Function(return alert('!!!'));//错误,抛出异常:"Uncaught SyntaxError: Unexpected token return"
setInterval(foo3,2000);
var foo4 = new Function(alert('!!!'));//刚开始运行一次,没有异常
setInterval(foo4,2000);
setInterval(function(){alert("!!!")},2000);//正常运行,而且刚开始时不会执行
setInterval(foo5(),2000);//刚开始运行一次,没有异常,执行一次的原因可能是载入过程中执行
function foo5(){
	alert("!!!");
};
function foo6(){
	alert("!!!");
};
setInterval(foo3(),2000);//注释掉这里不会运行函数,所以并不是载入脚本时自动执行的函数,而是被setInterval()调用执行了一次
setInterval("foo7()",2000);//正常运行,而且刚开始时不会执行
function foo7(){
	alert("!!!");
};
function foo8(){//正常运行,而且刚开始时不会执行
	alert("!!!");
};
setInterval("foo8()",2000);
setInterval("foo9",2000);
function foo9{//错误,抛出异常:"Uncaught SyntaxError: Unexpected token {"
	alert("!!!");
};
function foo10(){//不会执行调用函数
	alert("!!!");
};
setInterval("foo10",2000);
function foo11(){//正常运行,而且刚开始时不会执行
	alert("!!!");
};
setInterval(foo11,2000);

实验总结:

要想通过 setInterval() 方法正常调用执行函数,有三种方法:

  • 通过 new 创建一个函数字面量,如 foo1
  • 声明一个函数,然后通过字符串的形式调用,如 foo7
  • 如果函数没有参数,则可以 foo11 的形式调用函数

附:如果需要停止计时事件,则需要这样:

var id = setInterval("foo1()",100);
function foo2(){
	clearInterval(id);
}

停止计时事件需要给出被停止的事件的 id。

posted @ 2019-03-30 19:09  1000sakura  阅读(1207)  评论(0编辑  收藏  举报