4 回答

TA貢獻(xiàn)55條經(jīng)驗(yàn) 獲得超37個(gè)贊
第一:var num = square(2);執(zhí)行是因?yàn)閖s中可以把方法當(dāng)做參數(shù)一樣來(lái)使用,但是因?yàn)槟愕膕quare方法沒(méi)有return,所以var num是無(wú)法接收到square(2)執(zhí)行后的值,square(2)執(zhí)行得到的結(jié)果就是sun = 4;
所以你alert(num);還是得到的undified,至于你alert(sum),就錯(cuò)誤的更離譜了,你的代碼壓根就沒(méi)sum這個(gè)變量,你是把sun看成sum了吧??!
第二:函數(shù)如果沒(méi)有返回值,在執(zhí)行的時(shí)候,無(wú)法用變量來(lái)接收,沒(méi)返回何來(lái)接受!
第三:給你更改了一下:
function?square(num)?{ ????return?num?*?num; } var?num?=?square(2); alert(num);
這樣,你只要用變量接收?qǐng)?zhí)行的結(jié)果,就可以得到想要的值!

TA貢獻(xiàn)2條經(jīng)驗(yàn) 獲得超0個(gè)贊
?sun和sum的問(wèn)題不多說(shuō)了
var num=square(2) ?這句從右往左執(zhí)行,執(zhí)行效果是,電腦確實(shí)進(jìn)行了2*2的運(yùn)算,并且把運(yùn)算結(jié)果4傳給了sum,但是square函數(shù)并沒(méi)有return,所以不返回值,也就無(wú)法給var num賦值。
所以不管賦值成不成功,alert(sum)中的sum的值都是square(2)的運(yùn)行結(jié)果,但是你把var num改成var sum就等于在square(2)執(zhí)行完成后,重新定義了一個(gè)sum,這個(gè)重新定義的sum是沒(méi)有值的,因?yàn)閟quare(2)沒(méi)有return.

TA貢獻(xiàn)190條經(jīng)驗(yàn) 獲得超40個(gè)贊
function?square(num){ ????var?sum?=?num*num; ????return?sum; } var?sum?=?square(2); alert(sum);

TA貢獻(xiàn)361條經(jīng)驗(yàn) 獲得超191個(gè)贊
函數(shù)沒(méi)有返回值時(shí),square(2)===undefined;
函數(shù)內(nèi)部的sum并未加上var聲明,因此當(dāng)做全局函數(shù)看待,所以suqare(2)執(zhí)行完畢后,雖然沒(méi)有返回值,但是sum===4,外部是可以訪問(wèn)到的,你如果加上var 外部就無(wú)法訪問(wèn)到了;
所以alert(sum)===4;
alert(num),即alert(square(2))===undefined
添加回答
舉報(bào)