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