最後の行の document.write の firefox でのみ undefined が出力される理由を誰かが説明してくれませんか。最初の document.write を削除するとうまくいきますが、これは Firefox だけのようです。
document.write("Hello <br />");
myVar = 55;
document.write(window.myVar);
最後の行の document.write の firefox でのみ undefined が出力される理由を誰かが説明してくれませんか。最初の document.write を削除するとうまくいきますが、これは Firefox だけのようです。
document.write("Hello <br />");
myVar = 55;
document.write(window.myVar);
それはjsfiddleのせいです。mootools のaddEvent()
関数を使用して、ページの onload イベントにバインドされた無名関数にスクリプトがラップされています。何らかの理由で、onload イベントでコードを実行すると、スコープがwindow
Firefox にありません。
ページのソースを見ると、コードは次のようになります。
<script type='text/javascript'>//<![CDATA[
window.addEvent('load', function() {
document.write("Hello <br />");
myVar = 55;
document.write(window.myVar);
});//]]>
</script>
ライブラリなしで同じスクリプトを実行すると、いずれにしても正常に動作します: http://jsfiddle.net/43pbj/4/
オブジェクトmyVar
から呼び出していますが、そのように設定していません。window
次のいずれかを行います。
window.myVar = 55;
document.write(window.myVar);
また:
var myVar = 55;
document.write(myVar);
編集:
注意として、window
オブジェクトにアタッチされた変数が絶対に必要でない限り、2 番目のオプションを使用します。