函数为什么返回两次?;

xiaopengji
  • 631

function f(num1,num2){

            if(num1<num2){
                return alert(num1);
            }else{
                return alert(num2);
            }
         
            
        }
alert(f(1,2))  //一次弹1;一次undefined;我理解的只弹一次;
回复
阅读 2.4k
4 个回答
dollor
  • 1.9k
✓ 已被采纳
function f(num1,num2){

    if(num1<num2){
        return alert(num1);//这里弹第一次
    }else{
        return alert(num2);
    }
 
    
}
alert(f(1,2));//这里弹第二次

你的本意应该是这样的

function f(num1,num2){

    if(num1<num2){
        return num1;//返回该数字
    }else{
        return num2;
    }
 
    
}
alert(f(1,2));//这里弹出显示返回值
mqycn
  • 2.1k

return alert(1);

alert(1); //弹1

retrun undefined;

首先他先执行了你的f函数然后你return 了alert()这时候通过判断你肯定会执行一个alert 并return了undefined 在全局中你alert了f函数的返回结果undefined;你应该去掉alert(f()),直接执行f(1,2),或者f函数中不要return alert 直接return 你的num

简单来说,alert重复了,你把代码改成

if (num1>num2)
{
    return num1
}
else
{
    return num2
}

就可以了
因为alert没有返回值,你在代码里return alert()会先对alert进行求值,求值的过程中会弹出提示框,求值结果为undefined ,函数再返回undefined ,然后在函数外部alert(f()),f()的返回值为undefined ,所以alert出来的自然也是undefined

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏