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ハンド
![sawatの日記 - JavaScriptはほんとにシングルスレッドで実行されているのか?](https://cdn-ak-scissors.b.st-hatena.com/image/square/8523776297c1bb94808fbd27ee45f3b9536d7269/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fs%2Fsawat%2F20060913%2F20060913015224.png)