js--for循环延时打印12345

js–for循环每隔一秒打印一个数(1 2 3 4 5)

//字节跳动面试遇到的问题
法一:

//ES6:let 
for( let i = 1 ; i < 6 ; i++ ){
	setTimeout( function(){
		console.log( i )
	},1000*i )
}

法二:

//立即执行函数 闭包
for( var i = 1 ; i < 6 ; i++ ){
	(function(j){
		setTimeout( function(){
			console.log( j )
		},1000*j )
	})(i)
}

补充:
老虎集团笔试遇到的问题(考察let与var区别):

for( let i = 0 ; i < 2 ; i++ ){
	setTimeout( function(){
		console.log( i )
	},100 )
} // 0 1
for( var i = 0 ; i < 2 ; i++ ){
	setTimeout( function(){
		console.log( i )
	},100 )
} //2 2


//变量i是let声明的,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量
//使用let变量除了作用域是在for区块中,会为每次循环执行建立一个新的词法环境,拷贝所有的变量名称与值到下一个循环执行。
比如:
for( let i = 0 ; i < 2; i++ ){
	console.log( i )
}
可以理解为:
let i;
for( i = 0 ; i < 2 ; i++ ){
	let j = i; //每次循环都会创建一个新的j变量
	console.log( j );
}
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值