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

如何在JS中用单个函数修改多个变量?C转JS开发者求助

解决函数参数修改后外部变量不更新的问题

你想返回包含修正后month和year的对象,这个思路完全正确!JavaScript里数字这类原始类型是按值传递的,函数内部修改的只是参数的副本,自然不会影响外部变量。返回对象(或数组)是处理这种多值返回场景的标准方案。

修正后的完整代码

const checkMonth = (month, year) => {
  let correctedMonth = month;
  let correctedYear = year;
  
  if (correctedMonth > 12) {
    correctedMonth -= 12;
    correctedYear += 1;
  }
  
  return { month: correctedMonth, year: correctedYear };
}

调用示例

调用后通过对象解构就能拿到更新后的值:

let currentMonth = 15;
let currentYear = 2024;

const { month: updatedMonth, year: updatedYear } = checkMonth(currentMonth, currentYear);

console.log(updatedMonth); // 输出 3
console.log(updatedYear); // 输出 2025

额外优化(处理月份超过24的情况)

如果后续需要支持月份大于24的场景(比如传入25),可以改成循环判断:

const checkMonth = (month, year) => {
  let correctedMonth = month;
  let correctedYear = year;
  
  while (correctedMonth > 12) {
    correctedMonth -= 12;
    correctedYear += 1;
  }
  
  return { month: correctedMonth, year: correctedYear };
}

可选方案:用数组返回多值

除了对象,也可以用数组返回(但对象的键名更语义化,推荐优先使用对象):

const checkMonth = (month, year) => {
  let correctedMonth = month;
  let correctedYear = year;
  
  if (correctedMonth > 12) {
    correctedMonth -= 12;
    correctedYear += 1;
  }
  
  return [correctedMonth, correctedYear];
}

// 调用时用数组解构
const [updatedMonth, updatedYear] = checkMonth(15, 2024);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:45:59