amachang氏の JavaScript を学ぶ際に一番重要なのに、誤解されがちな setTimeout 系の概念 - IT戦記 を読んで、「そうそうJavaScriptはシングルスレッドだからね〜」なんて思っていながらその実証コードを作って遊んでいるうちに奇妙な現象を発見した。 以下が問題のコード <html> <head> <script type="text/javascript"> function test() { window.str = undefined; setTimeout(function(){ alert(window.str); }, 0); window.str = prompt('hoge?'); } </script> </head> <body onclick="test()"> </body> </html>ドキュメントのbodyにonclickハンド