猿问

为什么这段函数不需要return返回值也能运行

function square(num){
  sun=num*num;
}
var num = square(2);
alert(sum);

把var num换成var sum反而undefind,为什么会这样?

哈哈哈蜜瓜
浏览 1910回答 4
4回答

小白师兄

第一:var num = square(2);执行是因为js中可以把方法当做参数一样来使用,但是因为你的square方法没有return,所以var num是无法接收到square(2)执行后的值,square(2)执行得到的结果就是sun = 4;所以你alert(num);还是得到的undified,至于你alert(sum),就错误的更离谱了,你的代码压根就没sum这个变量,你是把sun看成sum了吧!!第二:函数如果没有返回值,在执行的时候,无法用变量来接收,没返回何来接受!第三:给你更改了一下:function square(num) {     return num * num; } var num = square(2); alert(num);这样,你只要用变量接收执行的结果,就可以得到想要的值!

phpmadman

 sun和sum的问题不多说了var num=square(2)  这句从右往左执行,执行效果是,电脑确实进行了2*2的运算,并且把运算结果4传给了sum,但是square函数并没有return,所以不返回值,也就无法给var num赋值。所以不管赋值成不成功,alert(sum)中的sum的值都是square(2)的运行结果,但是你把var num改成var sum就等于在square(2)执行完成后,重新定义了一个sum,这个重新定义的sum是没有值的,因为square(2)没有return.

hulukid

function square(num){     var sum = num*num;     return sum; } var sum = square(2); alert(sum);

stone310

函数没有返回值时,square(2)===undefined;函数内部的sum并未加上var声明,因此当做全局函数看待,所以suqare(2)执行完毕后,虽然没有返回值,但是sum===4,外部是可以访问到的,你如果加上var 外部就无法访问到了;所以alert(sum)===4;alert(num),即alert(square(2))===undefined
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答