编写的JavaScript x、y值交换函数失效,请求技术排查帮助
你的JavaScript交换函数问题分析与修复
你写的这段交换函数没法正常工作,核心问题是变量覆盖导致原x值丢失:
当执行x = y时,x已经被替换成y的值(也就是3),这时候原来的x值(2)已经没了;接着执行y = x,其实是把已经变成3的x赋值给y,最后x和y都是3,自然没法完成交换。
给你两种简单的修复方案:
方案一:用临时变量保存原x值
这是最基础的交换逻辑,先把x的初始值存起来,避免被覆盖:
function swap(x, y) { const temp = x; // 保存原x的值 x = y; y = temp; return [x, y]; } console.log(swap(2, 3)); // 输出 [3, 2]
方案二:用ES6解构赋值(更简洁)
利用数组解构可以一步完成交换,不用临时变量:
// 直接返回交换后的数组 function swap(x, y) { return [y, x]; } // 或者在函数内部完成交换再返回 function swap(x, y) { [x, y] = [y, x]; return [x, y]; } console.log(swap(2, 3)); // 输出 [3, 2]
内容的提问来源于stack exchange,提问作者Daniel Lagnaux
相关产品推荐
相关产品推荐

