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

JS函数中return(y,x)交换参数值为何返回5而非(10,5)?

为什么JS的swapValues函数返回结果不符合预期?

你写的交换参数的函数代码如下:

function swapValues(x,y){ 
return (y,x);}

调用方式:

console.log(swapValues(5,10))

你预期输出(10,5),但实际得到的是5,核心原因是JS里的逗号运算符特性:

(y,x)这种写法里的逗号是逗号运算符,它会按顺序执行逗号两侧的表达式,最终返回最后一个表达式的结果。所以这里(y,x)执行后返回的是x的值,也就是5,自然控制台输出5。

另外要注意:JS并没有类似其他语言的元组语法,单独用括号包裹逗号分隔的值并不会创建你以为的元组结构。

如果要实现交换后返回两个值,可以用以下几种方式:

方式1:返回数组

function swapValues(x,y){ 
  return [y,x];
}
console.log(swapValues(5,10)); // 输出 [10, 5]

如果需要单独获取交换后的值,可以用解构赋值:

const [val1, val2] = swapValues(5,10);
console.log(val1, val2); // 输出 10 5

方式2:返回对象

function swapValues(x,y){ 
  return { swappedFirst: y, swappedSecond: x };
}
console.log(swapValues(5,10)); // 输出 { swappedFirst: 10, swappedSecond: 5 }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 06:30:00