猿问

关于局部变量

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>
全知术士
浏览 2053回答 3
3回答

习惯受伤

代码中的sum在方法外声明,所以对两个方法来说,sum都是可见的,实际上访问的是window.sum,并非某个方法内的sum。 楼主可以试试把,var sum = 0;放在第一个方法中测试。

joffyzou

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

Caballarii

sum变量定义在两个函数外面,作用域是在外部的,所以不是局部变量,两个函数里使用的sum实际还是外部的sumfunction myFunction(){     var sum=0; }这样才是函数内部的局部变量,只在这个函数里有效
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答