如何在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
相关产品推荐
相关产品推荐

