Loading

setTimeOut的函数传参问题

setTimeOut的错误使用:

给里面的函数传参时,我一开始是类似这样写的,这样写是错的,这里的function(i)中i的其实是形参,并不能把for里面的i传给它:

1 for(var i=0;i<5;i++){
2   setTimeout(function(i){
3     console.log(i);
4   },i*1000);
5 }

这样写输出的结果是undefined。

我们可以看一下setTimeOut的定义:

declare function setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;

 

所以要想传参要如下:

for(var i=0;i<5;i++){
  setTimeout(function(m, n){
    console.log(i);
    console.log(m, n);
  },i*1000, 2, 4);
}

 

或者这样:

for(var i=0;i<5;i++){
  setTimeout(function(m){
    console.log(m);
  },i*1000, i); //将i传给m
}

 

posted @ 2020-05-28 15:23  Yang-0394  阅读(557)  评论(0)    收藏  举报