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

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

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

哈哈哈蜜瓜 2016-09-18 09:08:54
function square(num){   sun=num*num; } var num = square(2); alert(sum);把var num换成var sum反而undefind,为什么会这样?
查看完整描述

4 回答

已采纳
?
小白师兄

TA贡献55条经验 获得超37个赞

第一: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);

这样,你只要用变量接收执行的结果,就可以得到想要的值!

查看完整回答
3 反对 回复 2016-09-18
  • 哈哈哈蜜瓜
    哈哈哈蜜瓜
    sun是打错了,我webstorm上一样是sum=num*num
  • 哈哈哈蜜瓜
    哈哈哈蜜瓜
    function square(num) { sum=num*num; } var num =square(2); alert(sum); 正确是这个,为什么sum还可以继续输出
  • 小白师兄
    小白师兄
    因为你square方法里面执行的结果就是sum=4;因为没有返回值,他永远是这个结果,你用var num =square(2);var num其实是没用的,因为结果还是sum = 4,所以你alert(sum)相当于弹出的是square的结果,因此可以得到,别的变量就不可以!!
点击展开后面2
?
phpmadman

TA贡献2条经验 获得超0个赞

  1.  sun和sum的问题不多说了

  2. var num=square(2)  这句从右往左执行,执行效果是,电脑确实进行了2*2的运算,并且把运算结果4传给了sum,但是square函数并没有return,所以不返回值,也就无法给var num赋值。

  3. 所以不管赋值成不成功,alert(sum)中的sum的值都是square(2)的运行结果,但是你把var num改成var sum就等于在square(2)执行完成后,重新定义了一个sum,这个重新定义的sum是没有值的,因为square(2)没有return.

查看完整回答
反对 回复 2016-09-18
  • phpmadman
    phpmadman
    另外,建议不管是全局变量还是局部变量最好都用var 声明一下,这样不容易乱
  • 哈哈哈蜜瓜
    哈哈哈蜜瓜
    就是说如果没有设置局部变量有没有return都能输出,如果设置了var sum的话就需要return和外部设置sum=square(5)才能输出是吗
?
hulukid

TA贡献190条经验 获得超40个赞

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


查看完整回答
反对 回复 2016-09-18
?
stone310

TA贡献361条经验 获得超191个赞

函数没有返回值时,square(2)===undefined;

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

所以alert(sum)===4;

alert(num),即alert(square(2))===undefined


查看完整回答
1 反对 回复 2016-09-18
  • 哈哈哈蜜瓜
    哈哈哈蜜瓜
    就是说当函数内没有设置局部变量的时候有没有return外部都能接收sum的值,如果设置了局部变量那外部也要同时设置局部变量是吗?
  • 4 回答
  • 0 关注
  • 1909 浏览
慕课专栏
更多

添加回答

举报

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