采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
请问下老师
for(var i = 0; i< 5;i++){
setTimeout((function(i){
console.log(i)
})(i), i*1000);
}
settimeout 第一个参数传递立即执行函数,在被放入栈之后也会立即执行而不会等待延迟执行?
setTimeout的第一个参数可以接收函数或者是用字符串代替function。而这里传入的立即执行函数会立即执行,其返回值是undefined,相当于setTimeout(undefined, i*1000),它不会进入等待执行的队列,并且会报错。 所以会立即输出01234
谢谢,再请问下,因为立即执行,所以相当于传的第一个参数是undefined,可以这样理解吗?
对,这样会报错
非常感谢!
是否立即执行,那得看 setTimeout 第二个参数啊,即延期时间
老师请问下,因为第一个参数是立即执行函数但没有返回值,所以相当于传的第一个参数是undefined,所以会报错,然后立即输出0~4,可以这样理解吗?
首先,setTimeout 的第一个参数必须是一个函数,不能是 undefined
登录后可查看更多问答,登录/注册
视频讲解前端面试中的JS高级知识点,扩展JS知识深度,从容面试
1.7k 7
1.3k 7
939 7
1.0k 6
953 6