JS面试题--使用for循环打印1-10,每个数字出现的间隔约500ms
Posted jingmi-coding
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS面试题--使用for循环打印1-10,每个数字出现的间隔约500ms相关的知识,希望对你有一定的参考价值。
又来刷面试题啦,哈哈。
要求:使用for循环打印1-10,每个数字出现的间隔约500ms。
分析:考察点--闭包,块级作用域
方式一、使用闭包+立即执行函数,自己当时的思路也是这样想的,但是,结果却没有体现间隔500ms
/*结果虽然依次输出了1-10,但是每个数字之间没有间隔,是一次性输出的,所以不正确*/
for (var i = 1; i <= 10; i++) { setTimeout((function(i) { console.log(i); })(i), 500); }
经过修改,结果满足要求:1.setTimeout每次的间隔500*i,保证每隔500ms输出一次 2.将立即执行移到外层
/** * 使用for循环打印1-10,每个数字出现的间隔约500ms * 方法一、使用闭包,注意setTimeout,每隔500ms,因此每次传递的间隔时间要乘以i */ for(var i=1;i<=10;i++){ (function(i){ setTimeout(function(){ console.log(i); },500*i); })(i); }
方法二、使用let,let本身就是块级作用域
for(let i=1;i<=10;i++){ setTimeout(function(){ console.log(i); },500*i); }
以上是关于JS面试题--使用for循环打印1-10,每个数字出现的间隔约500ms的主要内容,如果未能解决你的问题,请参考以下文章
面试题:线程A打印1-10数字,打印到第5个数字时,通知线程B
使用 for 返回列表 10 次。我希望在每个循环中按顺序在屏幕上打印 2 个数字 [关闭]