作者blues520520 (blues520520)
看板Ajax
标题[问题] 关於setTimeout写法
时间Sat Sep 15 21:20:42 2018
//错误写法
setTimeout(console.log(2),1000);
//正常写法....
setTimeout(function(){
console.log(2);
},1000)
//简短写法
setTimeout('console.log(2)',1000);
为什麽错误写法也会印出2,不懂?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.161.172.182
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1537017644.A.50E.html
1F:推 peanut97: setTimeout第一个参数是函数,时间到会执行函数的内容 09/15 21:37
2F:→ peanut97: 至於直接把 console.log(2)这种叙述当函数放进去... 09/15 21:38
3F:→ peanut97: 我就不知道了。 求解+1 09/15 21:38
5F:→ lachtchlee: setTimeout(console.log(2),1000); 09/15 22:25
6F:→ lachtchlee: console.log(7); 09/15 22:26
7F:→ lachtchlee: //output: 2 7 故it is not a callback 09/15 22:31
8F:→ lachtchlee: setTimeout(function(){console.log(2)},1000); 09/15 22:32
9F:→ lachtchlee: setTimeout(function(){console.log(2)},1000); 09/15 22:33
10F:→ lachtchlee: console.log(7); //output 7 2 2 there are two cbs 09/15 22:37
11F:→ xdraculax: test = function(){ 09/15 23:30
12F:→ xdraculax: print 2; 09/15 23:31
13F:→ blues520520: 我知道他没有等一秒後才执行,而是立即显示,不懂错 09/15 23:31
14F:→ blues520520: 误写法还能正常执行出来,不会报错 09/15 23:31
15F:→ xdraculax: return void(); 09/15 23:31
16F:→ xdraculax: } 09/15 23:31
17F:→ xdraculax: setTimeout(test,1000); 09/15 23:32
18F:→ xdraculax: 那错误写法就像这种效果,不知道这样你是否比较好懂@@ 09/15 23:33
19F:→ xdraculax: 上面错了,应该是 setTimeout(test(),1000); 09/15 23:36
20F:→ xdraculax: 丢入 setTimeout 的是 function 跑完後返回的结果而不 09/15 23:36
21F:→ xdraculax: 是 function 本身 09/15 23:36
22F:→ lachtchlee: 原po 你懂run to completion吗?希望你再仔细看看上文! 09/15 23:45
23F:→ blues520520: 谢谢各位解释 09/16 13:56
24F:→ y3k: 这问题就好像别人预期要你放把面包放到烤面包机里面送过去 09/16 22:29
25F:→ y3k: 但是你却把烤好的面包送了过去XD 09/16 22:29
26F:推 VdustR: mdn 有写啊... 09/17 14:56