js 里交换数组元素位置的问题

我知道可以通过赋值结构的方式交换,想请教下第二种方式为什么不可以?

        let arr1 = [1, 2];
        [arr1[0], arr1[1]] = [arr1[1], arr1[0]];
        console.log(arr1); // [2, 1]
        
        let arr = [1, 2];
        arr[0], arr[1] = arr[1], arr[0];
        console.log(arr); // [1, 2]
阅读 1.7k
2 个回答

逗号是个操作符。

arr[0], arr[1] = arr[1], arr[0]

这行代码的意思是先执行arr[0], 再执行arr[1] = arr[1], 最后返回 arr[0]。
所以其实相当于啥都没做。。。

你可以试试以下代码就知道了

let arr = [1, 2, 3]
arr[0], arr[1] = arr[2], arr[0]
console.log(arr)
arr[0], arr[1] = arr[1], arr[0];

可以理解为

arr[0]
arr[1] = arr[1]
arr[0]

第二种方式不符合规范

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题