var document

一行で IE の JavaScript を高速化する方法

/*@cc_on _d=document;eval('var document=_d')@*/

なるへそ。

ちなみに Firefox で 「 var document; 」を実行すると、「再定義エラー」が出る。
こっちのほうが動作としてはまともな気もしないでもない。

ところで、

これもまた、 JavaScript では変数はスコープの先頭で生成されるため、 document は空の変数となり undefined になってしまいます。

[javascript] var d = document; alert(d); // [object]と表示[/javascript]

[javascript] var d = document; alert(d); // undefined と表示 var document;[/javascript]

[javascript] var d = document; alert(d); // undefined と表示 if(false){var document;}[/javascript]

[javascript] var d = document; alert(d); // [object] と表示 function f(e){var document;}[/javascript]

以下は Firefox も挙動は同じ。 [javascript] alert(n); // undefined if(false){ var n; }[/javascript]

[javascript] alert(m); // エラー if(false){ var n; }[/javascript]
たとえ通ることのないルーチンであっても、内部的には 「var n;」はスコープ開始時に実行されるということか。
JavaScript の var についての考察