publicBusFare函数无法返回busFair值,请求排查代码错误
问题描述
我编写了publicBusFare函数,期望返回计算得到的busFair值,但目前无法获取到该返回值。不过当我在函数中使用console.log输出相关内容时能正常运行。请问我哪里出错了?
相关代码如下:
function publicBusFare(passenger) { let busFair = 0; if (typeof passenger == 'number') { // * Checking people for bus if (passenger % 50 != 0) { let extraPassengerOfBus = passenger % 50; // * Checking People for micro bus if (extraPassengerOfBus % 11 != 0) { let extraPassengerOfMicro = extraPassengerOfBus % 11; // * Checking Extra passenger are exist for public bus. if (extraPassengerOfMicro != 0) { // * Calculating The Bus Fair For Extra People... busFair = extraPassengerOfMicro * 250; return busFair; } } } } else { console.log("Please provide Number!") } } publicBusFare(1);
问题分析与解决
你的函数只有在满足所有嵌套if条件(乘客数不是50的倍数,且除以50的余数不是11的倍数,且该余数再除以11仍有余数)时才会执行return busFair语句。在其他场景下:
- 比如乘客数是50、11、55这类“刚好坐满大巴/小巴”的情况,函数执行完所有判断后没有任何
return,默认返回undefined - 输入非数字时,仅执行了
console.log提示,同样没有返回值
要解决这个问题,需要确保函数在所有分支路径都有返回逻辑,最简单的方式是在函数末尾统一返回busFair,同时给非数字输入的分支也添加返回值:
修正后的代码:
function publicBusFare(passenger) { let busFair = 0; if (typeof passenger == 'number') { if (passenger % 50 != 0) { let extraPassengerOfBus = passenger % 50; if (extraPassengerOfBus % 11 != 0) { let extraPassengerOfMicro = extraPassengerOfBus % 11; if (extraPassengerOfMicro != 0) { busFair = extraPassengerOfMicro * 250; } } } // 数字输入场景,统一返回计算后的busFair return busFair; } else { const tip = "Please provide Number!"; console.log(tip); // 非数字场景返回提示信息 return tip; } } // 现在调用函数可以正常获取返回值 const result = publicBusFare(1); console.log(result); // 输出250
内容的提问来源于stack exchange,提问作者Zubair
相关产品推荐
相关产品推荐

