js中不引入第三变量交换两个变量值

目录

一、算数运算

二、异或运算

三、利用JS弱类型

四、ES6解构

五、工作中常用


一、算数运算

利用算数的特性将两个值互换,缺点:只适合数字类型,容易出现精度丢失

let x = 1, y = 2;
x = x + y; // x = 3
y = x - y; // y = 3 - 2
x = x - y; // x = 3 - 1
console.log(x, y); // 1 2

二、异或运算

利用位运算实现交换,缺点:只适合整数

let x = -2, y = 1;
x ^= y; // x = 0011, y = 0010
y ^= x; // x = 0011, y = 0001
x ^= y; // x = 0010, y = 0001
console.log(x, y); // 1 2

三、利用JS弱类型

利用JS弱类型特性,数组、对象都可以

let x = 2, y = 1;
x = [x, y]; // x = [2, 1]
y = x[0]; // y = 2
x = x[1]; // x = 1
console.log(x, y); // 1 2
let x = 2, y = 1;
x = { x, y }; // x = {x: 2, y: 1}
y = x.x; // y = 2
x = x.y; // x = 1
console.log(x, y); // 1 2

四、ES6解构

利用ES6解构,方便快捷

let x = 2, y = 1;
[x, y] = [y, x]; // x = 1 y =2
console.log(x, y); // 1 2

五、工作中常用

搞得花里胡哨的干啥

let x = 2, y = 1, temp;
temp = y; // temp = 1
y = x; // y = 2
x = temp; // x = 1
console.log(x, y); // 1 2

你可能感兴趣的:(前端,JavaScript,面试,javascript,前端)