1

最後の行の document.write の firefox でのみ undefined が出力される理由を誰かが説明してくれませんか。最初の document.write を削除するとうまくいきますが、これは Firefox だけのようです。

document.write("Hello <br />");
myVar = 55;
document.write(window.myVar);

http://jsfiddle.net/43pbj/1/

4

2 に答える 2

3

それはjsfiddleのせいです。mootools のaddEvent()関数を使用して、ページの onload イベントにバインドされた無名関数にスクリプトがラップされています。何らかの理由で、onload イベントでコードを実行すると、スコープがwindowFirefox にありません。

ページのソースを見ると、コードは次のようになります。

<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/

于 2013-01-04T20:52:28.447 に答える
0

オブジェクトmyVarから呼び出していますが、そのように設定していません。window

次のいずれかを行います。

window.myVar = 55;
document.write(window.myVar);

また:

var myVar = 55;
document.write(myVar);

編集:

注意として、windowオブジェクトにアタッチされた変数が絶対に必要でない限り、2 番目のオプションを使用します。

于 2013-01-04T20:32:24.700 に答える