[問題] 關於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