看板 Ajax 關於我們 聯絡資訊
//錯誤寫法 setTimeout(console.log(2),1000); //正常寫法.... setTimeout(function(){ console.log(2); },1000) //簡短寫法 setTimeout('console.log(2)',1000); 為什麼錯誤寫法也會印出2,不懂? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.172.182 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1537017644.A.50E.html
peanut97: setTimeout第一個參數是函數,時間到會執行函數的內容 09/15 21:37
peanut97: 至於直接把 console.log(2)這種敘述當函數放進去... 09/15 21:38
peanut97: 我就不知道了。 求解+1 09/15 21:38
eight0: 你的錯誤寫法相當於 http://tinyurl.com/y964rlkk 09/15 21:47
lachtchlee: setTimeout(console.log(2),1000); 09/15 22:25
lachtchlee: console.log(7); 09/15 22:26
lachtchlee: //output: 2 7 故it is not a callback 09/15 22:31
lachtchlee: setTimeout(function(){console.log(2)},1000); 09/15 22:32
lachtchlee: setTimeout(function(){console.log(2)},1000); 09/15 22:33
lachtchlee: console.log(7); //output 7 2 2 there are two cbs 09/15 22:37
xdraculax: test = function(){ 09/15 23:30
xdraculax: print 2; 09/15 23:31
blues520520: 我知道他沒有等一秒後才執行,而是立即顯示,不懂錯 09/15 23:31
blues520520: 誤寫法還能正常執行出來,不會報錯 09/15 23:31
xdraculax: return void(); 09/15 23:31
xdraculax: } 09/15 23:31
xdraculax: setTimeout(test,1000); 09/15 23:32
xdraculax: 那錯誤寫法就像這種效果,不知道這樣你是否比較好懂@@ 09/15 23:33
xdraculax: 上面錯了,應該是 setTimeout(test(),1000); 09/15 23:36
xdraculax: 丟入 setTimeout 的是 function 跑完後返回的結果而不 09/15 23:36
xdraculax: 是 function 本身 09/15 23:36
lachtchlee: 原po 你懂run to completion嗎?希望你再仔細看看上文! 09/15 23:45
blues520520: 謝謝各位解釋 09/16 13:56
y3k: 這問題就好像別人預期要你放把麵包放到烤麵包機裡面送過去 09/16 22:29
y3k: 但是你卻把烤好的麵包送了過去XD 09/16 22:29
VdustR: mdn 有寫啊... 09/17 14:56