haizlin/fe-interview

[js] 第46天 写一个使两个整数进行交换的方法(不能使用临时变量)

haizhilin2013 opened this issue · 14 comments

第46天 写一个使两个整数进行交换的方法(不能使用临时变量)

利用运算符优先级和0*
b = a + 0 * (a = b);
利用执行顺序

a = a + b;
b = a - b;
a = a - b;

异或取值

a ^= b;
b ^= a;
a ^= b;
let a = 1, b= 2
[a, b] = [b, a]

利用运算符优先级和0*
b = a + 0 * (a = b);
利用执行顺序

a = a + b;
b = a - b;
a = a - b;

异或取值

a ^= b;
b ^= a;
a ^= b;

我去这种*操作, 我只知道一个解构.

  • ES6
let [a,b] = [b,a]  
  • ES5
var a = 1,b = 2;
a = b+a;
b = a-b;
a = a-b;
  • ES6
let [a,b] = [b,a]  
  • ES5
var a = 1,b = 2;
a = b+a;
b = a-b;
a = a-b;

ES 6 这个 优秀

不能使用临时变量的是什么意思求解答

let a = 1;
let b = 2;
[a, b] = [b, a];
console.log(a, b); // => 2, 1

let a = 1, b = 2
return [a, b] = [b, a]

  1. 第一种
let b = 1
let c = 2
let tmp
tmp = b
b = c
c = tmp
  1. 第二种
let a = 1;
let b = 2;
[a, b] = [b, a];

利用运算符优先级和0*
b = a + 0 * (a = b);
利用执行顺序

a = a + b;
b = a - b;
a = a - b;

异或取值

a ^= b;
b ^= a;
a ^= b;

分享个新鲜的用法

let a = 0;
let b = 1;
a = [b, b = a][0];
console.log(a, b);

es6 解构
[a,b] = [b,a]

wyy-g commented

ES6解构赋值 [a, b] = [b, a];
ES5 a = a + b;
b = a - b;
a = a - b;