看板 Ajax作者 blues520520 (blues520520)標題 [問題] 關於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
※ 文章代碼(AID): #1RdGSiKE (Ajax)
※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1537017644.A.50E.html
※ 同主題文章:
[問題] 關於setTimeout寫法
09-15 21:20 blues520520.
推 peanut97: setTimeout第一個參數是函數,時間到會執行函數的內容至於直接把 console.log(2)這種敘述當函數放進去...
我就不知道了。 求解+11F 09/15 21:37
→ lachtchlee: setTimeout(console.log(2),1000);
console.log(7);
//output: 2 7 故it is not a callback
setTimeout(function(){console.log(2)},1000);
setTimeout(function(){console.log(2)},1000);
console.log(7); //output 7 2 2 there are two cbs5F 09/15 22:25
→ xdraculax: test = function(){
print 2;11F 09/15 23:30
→ blues520520: 我知道他沒有等一秒後才執行,而是立即顯示,不懂錯誤寫法還能正常執行出來,不會報錯13F 09/15 23:31
→ xdraculax: return void();
}
setTimeout(test,1000);
那錯誤寫法就像這種效果,不知道這樣你是否比較好懂@@上面錯了,應該是 setTimeout(test(),1000);
丟入 setTimeout 的是 function 跑完後返回的結果而不是 function 本身15F 09/15 23:31
→ lachtchlee: 原po 你懂run to completion嗎?希望你再仔細看看上文!22F 09/15 23:45
→ y3k: 這問題就好像別人預期要你放把麵包放到烤麵包機裡面送過去
但是你卻把烤好的麵包送了過去XD24F 09/16 22:29
推 VdustR: mdn 有寫啊...26F 09/17 14:56
--