settimeout 第一传参是执行代码和函数的问题

1、今天试了下settimeout这个方法,发现第一个传参是函数和执行代码,效果不一样

for( var i = 0; i < 5; i ++ ){
    setTimeout(()=>{
      console.log( i );
    },2000)
}
输出 5个5for( var i = 0; i < 5; i ++ ){
    setTimeout(console.log( i ),2000)
}
输出 01234

2、我的猜想是第一个传参是先预读了,第一种方式是函数,所以函数内部代码没有预读,第二个是执行代码,预读了然后延时执行?不知道我的猜想对不对?


慕斯王
浏览 573回答 2
2回答

ABOUTYOU

试一下这个for(&nbsp;let&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;5;&nbsp;i&nbsp;++&nbsp;){ &nbsp;&nbsp;&nbsp;&nbsp;setTimeout(()=>{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(&nbsp;i&nbsp;); &nbsp;&nbsp;&nbsp;&nbsp;},2000) } for(&nbsp;let&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;5;&nbsp;i&nbsp;++&nbsp;){ &nbsp;&nbsp;&nbsp;&nbsp;setTimeout(console.log(&nbsp;i&nbsp;),2000) }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Html5