權耀揚
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
提交
取消
