首页
学习
活动
专区
圈层
工具
发布

关于setTimeout和setInterval的函数参数问题

今天在写验证码倒计时小demo时,用了如下代码: window.setTimeout(count(num),1000); 这样直接使用将使count函数立即执行,并将返回值传递给setTimeout函数作为参数...,其结果并不是真正需要的,所以会出现问题。...方法一 使用字符串形式可以达到想要的结果: window.setTimeout("count(num)",1000); 这是我以前常用的方法。 但这种写法是将函数包在引号里,有点像字符串,不够直观。...在 window.setTimeout函数中,使用_count(30)来返回一个不带参数的函数,此时不需要用引号也实现了参数传递的功能。...其实还可以直接写成: window.setTimeout(function(){count(30);},1000); 另外也有人通过修改setTimeout、setInterval来实现。

2.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    写一个网页进度 loading

    progress.html(prg + '%') console.log(prg) }, 100) window.onload = () => { $loading.hide() } 效果不错,但是有个问题...目前来看,这个进度还是有些问题的: 进度太平均,相同的时间间隔,相同的增量,不符合网络环境的特点; window.onload太快,我们还来不及看清100%,loading就已经不见了; 每次第一阶段都是在...but,还有一个比较隐蔽的问题,我们现在使用window.onload,发现从进入页面,到window.onload这中间相隔时间十分短,我们基本是感受不到第一阶段进度(80%)的,这是没有问题的——我们在意的是...but,还是有问题,这个定时器是在js加载完毕之后才开始生效的,也就是说,我们忽略了js加载完毕之前的时间,这误差可大可小,我们设置的5s,实际用户可能等待了8s,这是有问题的。...问题是,如果图片加载完成是按照顺序来的,那我们可以很简单地:10(假设初始进度是10%) -> 30 -> 55 -> 85 -> 100,但事实是,图片不会按照顺序来,谁早到谁晚到是说不准的,所以我们需要更合理的方式去管理这些进度增量

    2.7K90

    js中settimeout和setInterval区别_JavaScript set

    使用定时器实现JavaScript的延期执行或重复执行 window对象提供了两个方法来实现定时器的效果,分别是window.setTimeout()和window.setInterval。...它们的原型如下: window.setTimeout(expression,milliseconds); window.setInterval(expression,milliseconds); 其中,...其中最后一句也可以写为: window.setTimeout(“hello()”,5000); 读者可以体会它们的差别,在window.setInterval方法中也有这样的性质。...而使用字符串形式可以达到想要的结果: window.setTimeout(“hello(userName)”,3000); 这里的字符串是一段JavaScript代码,其中的userName表示的是变量...在window.setTimeout函数中,使用_hello(userName)来返回一个不带参数的函数句柄,从而实现了参数传递的功能。

    2.3K10

    js动画效果_js动画函数

    setTimeout VS. requestAnimationFrame 传统js动画实现一般使用setTimeout/setInterval等定时方式执行一个动画更新操作,但这种方式在使用中存在一些问题...动画帧间隔interval问题 大部分显示器的刷新频率是16.7ms,如果setTimeout的interval小于这个值,就会出现绘制的帧无法在显示器上展现的问题,好像被吞掉了一样。...页面不可见时继续执行,浪费资源、电量 而requestAnimationFrame则可以解决这些问题: 浏览器自动根据当前显示器刷新频率来设置动画每帧的间隔时间interval。...window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function( callback ){ window.setTimeout...currTime = new Date().getTime(); var timeToCall = Math.max(0, 16 - (currTime - lastTime)); var id = window.setTimeout

    35K30
    领券