You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

两个带return的JavaScript BMI计算函数的功能差异是什么?

两个BMI计算器函数的功能差异解析

这两个函数的核心BMI计算功能完全一致,但在变量作用域上存在关键区别,这也是你测试时看到不同控制台表现的原因:

代码对比与差异分析

函数1:

function bmiCalculator(weight, height){
    return bmi = Math.round(weight / Math.pow(height, 2));
} 

这里的bmi没有用var/let/const声明,在非严格模式下会自动在全局作用域创建一个同名变量,完成赋值后再返回该值。调用这个函数后,全局环境中会多出一个bmi变量,控制台直接执行函数时,会输出返回值(20),同时全局变量也被赋值为20。

函数2:

function bmiCalculator(weight, height){
    var bmi = Math.round(weight / Math.pow(height, 2));
    return bmi;
}

这里的bmi是用var声明的局部变量,仅存在于函数内部作用域中,函数执行结束后这个变量就会被回收,不会影响全局环境。所以你必须手动将函数的返回值赋值给某个变量(比如全局的bmi),再通过console.log才能看到结果。

总结

  • 两者的返回值完全相同,计算BMI的逻辑没有区别;
  • 函数1会污染全局作用域,函数2的变量仅局限在内部,更符合良好的编码规范。

内容的提问来源于stack exchange,提问作者Mason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 22:52:09