DOM Elementのid要素がjavascriptのグローバル変数にマッピングされる

HTML5の仕様らしいんですが、知らなくてハマりました…

<div id="tweets">
 <script>
   if (typeof(tweets) != 'undefined'){
     document.write(tweets);
   }
  </script>
</div>

というのがあったとして、”何も出力されない”ことを期待していたんだけど、

[object HTMLDivElement]

が、出力されます。

まぁ、ちゃんと

<div id="tweets">
 <script>
   var tweets;
   if (typeof(tweets) != 'undefined'){
     document.write(tweets);
   }
  </script>
</div>

ってやってれば何の問題も無かったんだけど…
ちゃんと変数宣言や初期化しましょうね。

参考: DOM: element IDs are global variables

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です