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