var document
/*@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 についての考察