例如[1,2,3] 第1秒钟打印1,第2秒钟打印2,第3秒钟3...
我是这样写的:
js
function foo(arr) { if(Object.prototype.toString.call(arr).slice(8,-1) !== "Array") return; var length = arr.length; var i = 0; return function(){ if(i<length) console.log(arr[i++]); } } setInterval(foo([1,2,3]),1000);
有没有更好点的写法,请教了,谢谢。 =.=
这种怎么样 ?
个人觉得这样很清晰~
我觉得这种好,不需要循环,利用 Array自带的函数,效率也好。
我都不知道说什么了
应该是最省的写法了吧,也没用for,也没有全局变量。相对于调用Array的方法移除数组项目,使用index直接读取值性能会高一点
原来的写法有什么不好的?
能够保证每隔1秒触发一次,但不能保证按希望的时间点执行
偷师学艺,借鉴排名第一的答案,如果用setTimeout()实现可以这样写:
如果是用setInterval()实现可以这样写:
基本上思路差不多,我也是个小白,匿名函数自执行也是最近学习了一点,我这里写一下我的分解思路,就当做是小白的一个读书笔记吧:
首先,一开始先想到遍历数组挨个打印,于是就是这样:
其次再在这个基础上想到匿名函数自执行把arr作为形参,具体数组作为实参,于是就是下面这样:
最后想到用匿名函数自执行并使用setInterval()实现每一秒挨个打印:
再在这个基础上参(fu)考(zhi)排名第一的答案用setTimeout()实现此效果:
感谢楼上各位大牛的答案,菜鸟我受教了。