我想知道使用var
声明变量时的区别。我使用了以下代码:
<body>
<h1>New Web Project Page</h1>
<script type="text/javascript">
function test(){
a = "hello";
var b="world";
}
alert(a);
alert(b);
</script>
</body>
为什么警报不起作用以及在javascript中使用var
声明变量时有什么区别。
答案 0 :(得分:4)
alert
不起作用,因为在b
的情况下,它不存在于正确的范围内,并且在a
的情况下它还没有被实例化因为你没有调用函数test
var
创建一个变量,该变量是调用它的作用域的本地变量。如果没有var,则创建一个全局变量。
function fn ( ) {
var x = 0; // this variable is local to the function fn
y = 10; // this variable is global and can be accessed
// from anywhere after you call fn
}
一般来说,除非有充分理由不想使用全局变量。也就是说,您希望使用var
创建所有变量。仅将变量放在需要的范围内,便于理解和维护代码。它还有助于缓解“魔术变量”问题。你有变量出现但你不清楚从哪里出现的地方。它还使调试代码变得更容易,因为在javascript中,不存在的变量即时创建。但是如果你只通过var
使用局部变量和像jsLint这样的工具,那么你就不会遇到变量名拼写错误的问题,从而使你的代码摆脱了怪癖。
答案 1 :(得分:2)
声明没有var
的变量使其成为全局变量,因此任何东西都可以访问它。您的提醒无效的原因是由于您从未致电test()
,因此永远不会分配a
或b
。如果你打电话给test
(警报之前),b
将是未定义的,a
应该是你好。
答案 2 :(得分:1)
您没有调用test()
函数。排除var
后,变量将变为全局变量,因此它们可供所有代码使用。
答案 3 :(得分:1)
关于使用'var'的完全相同的问题已被回答here
关于警报不起作用的原因,这是因为您没有调用'test()'函数。它刚刚创建......它什么都不做。你需要调用它来填充变量。