權耀揚
2016-06-08 17:33:15
<script type="text/javascript">function ffo(a,b){ //定義函數? ? if( a > b){? ? ? ? return a;? ? } else if( a < b ){? ? ? ? document.write(a + "<br>")? ? } else if( a == b ){? ? ? ? document.write("axyb2")? ? }else{? ? ? ? document.write("aaa");? ? }}var ff1 = ffo(4,99);document.write(ff1);</script>結果輸出4,undefined問: 為什么會輸出undefined?
7 回答

lovespotty
TA貢獻1條經驗 獲得超1個贊
簡單說下,默認情況下,ES5函數如果沒有返回值,默認返回undefined。
function?test(){ ????//code ????//啥也不返回 } var?a?=?test();
那么a就是undefined;
這樣的話,再解釋你的代碼
function?ffo(a,b){ ????//這里真正執行的是 ????document.write(a?+?"<br>") } var?ff1?=?ffo(4,99);//ff1?得到的是undefined document.write(ff1);
所以組后得到的是
4 undefined

檸檬酸鈉
TA貢獻331條經驗 獲得超534個贊
function?ffo(a,b){?//定義函數 ????if(?a?>?b){ ????????return?a; ????}?else?if(?a?<?b?){ ????????document.write(a?+?"<br>") ????}?else?if(?a?==?b?){ ????????document.write("axyb2") ????}else{ ????????document.write("aaa"); ????} } var?ff1?=?ffo(4,99); document.write(ff1);
很顯然,4是小于99的,所以在函數內執行的應該是第5行document.write(a + "<br>"),然后這條if語句就完了。
那么很明顯你的函數并沒有返回任何東西,也就說返回值是undefined,那么ff1就是undefined咯,你用document.write打印肯定是undefined

Suber丶林
TA貢獻75條經驗 獲得超180個贊
你的這句
//?表示把該方法執行的結果賦值給ff1,你這個方法沒有return,那么就是默認return?undefined;了 var?ff1?=?ffo(4,?99);
還有你的else里面的代碼永遠不會執行到,因為前面3個if已經包含了所有結果,可以把最后一個if去掉。
//?如果你真的想要執行后返回結果的話,那你把所有 document.write('xxxx'); //?改成 return?'xxxx'; //?醬紫就perfect了

亂舞的旋律
TA貢獻105條經驗 獲得超38個贊
ffo(4,99);? 執行到第二個if里面?? 沒有返回值 ,則返回undefined,所以 ff1是undefined。
ducument.write()是輸出 不是返回

蜂之谷
TA貢獻564條經驗 獲得超863個贊
你的函數只有if中有return啊,其它條件沒有return,你用ff1去接收返回肯定是undefined啊
這樣寫
<script?type="text/javascript"> function?ffo(a,b){?//定義函數 ????if(?a?>?b){ ????????return?a; ????}?else?if(?a?<?b?){ ????????return?a?+?"<br>"; ????}?else?if(?a?==?b?){ ????????return?"axyb2"; ????}else{ ????????return?"aaa"; ????} } var?ff1?=?ffo(4,99); document.write(ff1); </script>
添加回答
舉報
0/150
提交
取消