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 }
原文:https://www.cnblogs.com/pureshee/p/12981108.html