秒測 JavaScript 能力

alert 視窗

題目:

如示意圖,用原生的 alert() 在瀏覽器跳出「時間到」的訊息。

如果你是這樣想的,代表你以為你會 JavaScript,但其實你都是在胡搞:

alert('時間到');

至少要這樣才像話:

setTimeout(() => { alert('時間到'); console.log('timeout'); }); console.log('done');

這樣最接近 alert() 原本的用法:

(async () => { alert('時間到'); })().then(() => { console.log('after timeout'); });

如果到現在你還是堅持你真的會 JavaScript,但還是搞不懂為什麼,那代表你會的是某個 JavaScript framework,那不是 JavaScript。

MDN 也這樣提醒了:

秒測 JavaScript 能力

可是考試題目就是要用 alert(),所以,就把它改成非同步執行的。

還有件更可怕的事情,就是上面那一段 MDN 的提醒,是放在《全新手請從這開始!》;confirm() 同理:

(async () => { var a = confirm('確定嗎?'); return a; })().then((ret) => { if (ret) { console.log('confirm'); } else { console.log('cancel'); } });

當新手也沒甚麼丟臉的地方,新手才有門可入,就算你是百年難得一件的練武奇才,也得先入門。