[问题] 关于setTimeout写法

楼主: blues520520 (blues520520)   2018-09-15 21:20:42
//错误写法
setTimeout(console.log(2),1000);
//正常写法....
setTimeout(function(){
console.log(2);
},1000)
//简短写法
setTimeout('console.log(2)',1000);
为什么错误写法也会印出2,不懂?
作者: peanut97 (丁丁)   2018-09-15 21:37:00
setTimeout第一个参数是函数,时间到会执行函数的内容至于直接把 console.log(2)这种叙述当函数放进去...我就不知道了。 求解+1
作者: eight0 (欸XD)   2018-09-15 21:47:00
你的错误写法相当于 http://tinyurl.com/y964rlkk
作者: lachtchlee (nymph)   2018-09-15 22:25:00
setTimeout(console.log(2),1000);console.log(7);//output: 2 7 故it is not a callbacksetTimeout(function(){console.log(2)},1000);setTimeout(function(){console.log(2)},1000);console.log(7); //output 7 2 2 there are two cbs
作者: xdraculax (首席怪叔叔)   2018-09-15 23:30:00
test = function(){print 2;
楼主: blues520520 (blues520520)   2018-09-15 23:31:00
我知道他没有等一秒后才执行,而是立即显示,不懂错误写法还能正常执行出来,不会报错
作者: xdraculax (首席怪叔叔)   2018-09-15 23:31:00
return void();}setTimeout(test,1000);那错误写法就像这种效果,不知道这样你是否比较好懂@@上面错了,应该是 setTimeout(test(),1000);丢入 setTimeout 的是 function 跑完后返回的结果而不是 function 本身
作者: lachtchlee (nymph)   2018-09-15 23:45:00
原po 你懂run to completion吗?希望你再仔细看看上文!
楼主: blues520520 (blues520520)   2018-09-16 13:56:00
谢谢各位解释
作者: y3k (激流を制するは静水)   2018-09-16 22:29:00
这问题就好像别人预期要你放把面包放到烤面包机里面送过去但是你却把烤好的面包送了过去XD
作者: VdustR (京)   2018-09-17 14:56:00
mdn 有写啊...

Links booklink

Contact Us: admin [ a t ] ucptt.com