请帮帮我。在这段代码中,我得到的是5而不是10 ......这是我的代码:
<html>
<head>
<script type="text/javascript">
b=function(){
alert(a);
}
</script>
</head>
<body>
<button id="b" onclick="c()">ok</button>
<script type="text/javascript">
var a=5;
c=function(){
var a = 10;
b();
}
</script>
</body>
</html>
答案 0 :(得分:1)
显然你会得到5,因为'a'在函数c()内部的两个地方定义,也适用于全局作用域。
由于函数b没有任何名为a的局部变量,因此它指的是值为5的全局变量;
小提琴: http://jsfiddle.net/T8grU/
var a=5;
b=function(){
alert(a);
}
c=function(){
a = 10;
b();
}
答案 1 :(得分:0)
当您使用关键字“var”时,您将其声明为局部变量。所以,你不是在改变全局“a”变量,而是在本地为你的“c”函数定义一个新变量。
答案 2 :(得分:0)
当你说var
时,你基本上重置了变量。删除c函数中的var
。它被定义为函数的局部变量!
c=function(){
a = 10;
b();
}
答案 3 :(得分:0)
<html>
<head>
<script type="text/javascript">
b=function(){
alert(a);
}
</script>
</head>
<body>
<button id="b" onclick="c()">ok</button>
<script type="text/javascript">
var a=5;
c=function(){
a = 10;
b();
}
</script>
</body>
</html>
答案 4 :(得分:0)