js中局部变量只对局部的函数起作用,执行完该函数自动删除局部变量,但这段代码中第二个函数里面变量sum的值和第一个sum值是一样的,这是怎么回事儿呢?不应该是0么?
<html>
<head>
<title>全部变量和局部变量再探</title>
</head>
<body>
<button onclick="myFunction()">局部变量</button>
<br><br>
<button onclick="myFunctions()">局部变量</button>
<script>
var sum=0;
function myFunction(){
var str1=123;
var str2=345;
sum=str1+str2;
alert(sum);//值为468
}
function myFunctions(){
alert(sum);//值为468
}
alert(sum);//值为0
</script>
</body>
</html>
3 回答
习惯受伤
TA贡献885条经验 获得超1144个赞
代码中的sum在方法外声明,所以对两个方法来说,sum都是可见的,实际上访问的是window.sum,并非某个方法内的sum。
楼主可以试试把,var sum = 0;放在第一个方法中测试。
joffyzou
TA贡献45条经验 获得超17个赞
这个要看你先执行哪一个函数了,如果先执行myFunction,myFunctions返回值就是和 myFunction的值一样,如果先执行myFunctions的话,它的值就是0,你函数里面应用的都是全局变量,修改的都是全局变量的值,所以要看哪一个函数先执行,后面执行的函数是基于前面执行完后修改了的全局变量的值。
Caballarii
TA贡献1123条经验 获得超629个赞
sum变量定义在两个函数外面,作用域是在外部的,所以不是局部变量,两个函数里使用的sum实际还是外部的sum
function myFunction(){ var sum=0; }
这样才是函数内部的局部变量,只在这个函数里有效
添加回答
举报
0/150
提交
取消