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

函数定义后能否修改参数?调用参数名替换疑问及猜想验证

温度转换函数的参数疑问解答

先贴出你的代码:

function convertToFahrenheit(celsius) {
  return (celsius * 9 / 5) + 32;
}

function convertToCelsius(fahrenheit) {
  return (fahrenheit - 32) * 5 / 9;
}

function convertTemperature(degrees, unit) {
  if (unit === 'C') {
    const result = convertToFahrenheit(degrees);    /* How can we use "degrees" here? */
    return `${result}F`;
  } else if (unit === 'F') {
    const result = convertToCelsius(degrees);       /* How can we use "degrees" here? */
    return `${result}C`;
  }
}

console.log(convertTemperature(25, 'C'));
console.log(convertTemperature(86, 'F'));

为什么传入degrees能正常工作

函数定义里的参数名(比如convertToFahrenheit的celsius、convertToCelsius的fahrenheit)只是形参——就是个占位符,用来接收调用时传入的具体数值。

当你调用convertToFahrenheit(degrees)时,本质是把degrees变量存的数值(比如第一个调用里的25)传给函数,函数内部会把这个数值赋值给celsius变量来计算。参数名只是函数内部指代这个值的名字,和外部调用时的变量名没有绑定关系,只要传的是合法数值就行。

你的猜想不对,不是传入degrees本身,而是传入它代表的具体值。

函数定义后能不能修改参数?

没法直接修改已定义函数的参数列表,但有两种变通方式:

  • 重新定义同名函数,覆盖原有版本,比如重新写一个convertToFahrenheit,用不同的参数列表;
  • 用arguments对象或者ES6的剩余参数(...args)处理可变数量的参数,不用修改原参数定义也能接收更多参数。

注意,重新定义函数会完全覆盖原来的逻辑,使用时要谨慎。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:05:04