作者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/m.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