2010-01-11 139 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