js 打印出来的节点多了m_JS面试题--使用for循环打印1-10,每个数字出现的间隔约500ms...

本文探讨了如何利用JavaScript的闭包和块级作用域特性,通过for循环和setTimeout实现每500ms打印一个数字1到10。分析了两种方法,一种是通过闭包和立即执行函数,另一种是利用let关键字。正确的方法是在每次setTimeout中传入递增的时间间隔,确保数字按预期间隔输出。
摘要由CSDN通过智能技术生成

又来刷面试题啦,哈哈。

要求:使用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);

}

原文:https://www.cnblogs.com/jingmi-coding/p/9220409.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值