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

