猿问

javascript函数问题

<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?




权耀扬
浏览 1773回答 7
7回答

lovespotty

简单说下,默认情况下,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

柠檬酸钠

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丶林

你的这句// 表示把该方法执行的结果赋值给ff1,你这个方法没有return,那么就是默认return undefined;了 var ff1 = ffo(4, 99);还有你的else里面的代码永远不会执行到,因为前面3个if已经包含了所有结果,可以把最后一个if去掉。// 如果你真的想要执行后返回结果的话,那你把所有 document.write('xxxx'); // 改成 return 'xxxx'; // 酱紫就perfect了

乱舞的旋律

ffo(4,99);  执行到第二个if里面   没有返回值 ,则返回undefined,所以 ff1是undefined。ducument.write()是输出 不是返回

慕粉3291149

因为你的ffo函数没有返回值  

蜂之谷

你的函数只有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>
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答