码迷,mamicode.com
首页 > 其他好文 > 详细

setTimeout和setInterval

时间:2017-06-29 00:43:22      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:strong   get   推荐   ima   局部变量   show   log   指定   int   

setInterval语法:按照指定的周期(以毫秒计)来调用函数或计算表达式,直到 clearInterval() 被调用或窗口被关;由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

技术分享

setTimeout语法:用于在指定的毫秒数后调用函数或计算表达式,可使用clearTimeout()取消设置的 timeout,clearTimeout()的参数必须是setTimeout()的ID。

技术分享

 

setTimeout 和 setInterval 都可接收字符串作为第一个参数,使用此特性会用eval进行调用,如下例: 

function show() {
    console.log("全局区域");
}

function test() {
    function show() {
        console.log("内部区域");
    }
    setTimeout(show(), 2000);
}
test();// 结果:全局区域

分析:由于 eval 在这种情况下不是被直接调用(因为eval的作用域是当前执行的作用域,setTimeout的作用域是在全局,所以eval不是在函数test里面执行,而是在全局中执行),因此传递到 setTimeout 的字符串会自动在全局作用域中执行;因此,上面的回调函数使用的不是定义在 test 作用域中的局部变量 show。简单的理解,只能调用全局中声明的函数。

 如果我们要调用带参数的函数可以如下:

function test(a, b) {
    console.log(a + "和" + b);
}

//第一种:不推荐做法,因为这样定时器就会使用到eval
setTimeout(‘test(1, 2)‘, 2000);
  
//第二种:使用匿名函数完成功能
setTimeout(function() {
    test(1, 88);
}, 2000);

//第三种:IE9及IE9以下不支持此方法
setTimeout(test, 2000, 1, 2);

 注意:尽量避免使用 setInterval 函数,从而避免可能导致的回调函数堆积现象,避免导致回调堆积是合理使用 clearInterval() 方法。

setTimeout和setInterval

标签:strong   get   推荐   ima   局部变量   show   log   指定   int   

原文地址:http://www.cnblogs.com/daydayupyxq/p/7092066.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!