为了账号安全,请及时绑定邮箱和手机立即绑定

关于局部变量

关于局部变量

全知术士 2017-11-01 10:32:50
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;放在第一个方法中测试。

查看完整回答
1 反对 回复 2017-11-01
?
joffyzou

TA贡献45条经验 获得超17个赞

这个要看你先执行哪一个函数了,如果先执行myFunction,myFunctions返回值就是和 myFunction的值一样,如果先执行myFunctions的话,它的值就是0,你函数里面应用的都是全局变量,修改的都是全局变量的值,所以要看哪一个函数先执行,后面执行的函数是基于前面执行完后修改了的全局变量的值。

查看完整回答
反对 回复 2017-11-01
?
Caballarii

TA贡献1123条经验 获得超629个赞

sum变量定义在两个函数外面,作用域是在外部的,所以不是局部变量,两个函数里使用的sum实际还是外部的sum

function myFunction(){
    var sum=0;
}

这样才是函数内部的局部变量,只在这个函数里有效

查看完整回答
反对 回复 2017-11-01
  • 3 回答
  • 1 关注
  • 2052 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信