2010-01-11 159 views
0

我在JavaScript中遇到了全局變量問題。從我讀過的每篇文章中,讀出一個函數聲明的變量都有一個完整的範圍。但在alert(leftMargin);之下時,會在函數內產生'undefined';JavaScript全局變量問題

var leftMargin = 36; 
alert(leftMargin); /* '36' */ 

function position(direction) { 
    alert(leftMargin); /* 'undefined' */ 
} 
+2

你是怎麼調用'position'函數的?也許有一些修改變量的代碼。 – 2010-01-11 20:06:09

+2

這似乎很奇怪,但全局變量只是窗口屬性的快捷方式,所以'alert(window.leftMargin);'應該給你正確的結果 – Graza 2010-01-11 20:07:09

回答

5

你是積極的嗎?

<script type="text/javascript"> 
    var leftMargin = 36; 
    alert(leftMargin); /* '36' */ 
    function position(direction) { 
     alert(leftMargin); /* '36' */ 
    } 
    position(); 
</script> 

它對我警告36兩次,如預期。在定義變量leftMargin和實際調用position()之間可能會取消設置。

+0

啊,是的,它是在破壞它的函數內的其他東西。我應該學會去掉代碼,然後回來:) 感謝您的時間。 – Ben 2010-01-11 20:19:53