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);
这样,你只要用变量接收执行的结果,就可以得到想要的值!
TA贡献2条经验 获得超0个赞
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.
TA贡献190条经验 获得超40个赞
function square(num){ var sum = num*num; return sum; } var sum = square(2); alert(sum);
TA贡献361条经验 获得超191个赞
函数没有返回值时,square(2)===undefined;
函数内部的sum并未加上var声明,因此当做全局函数看待,所以suqare(2)执行完毕后,虽然没有返回值,但是sum===4,外部是可以访问到的,你如果加上var 外部就无法访问到了;
所以alert(sum)===4;
alert(num),即alert(square(2))===undefined
添加回答
举报