haizlin / fe-interview

前端面试每日 3+1,以面试题来驱动学习,提倡每日学习与思考,每天进步一点!每天早上5点纯手工发布面试题(死磕自己,愉悦大家),6000+道前端面试题全面覆盖,HTML/CSS/JavaScript/Vue/React/Nodejs/TypeScript/ECMAScritpt/Webpack/Jquery/小程序/软技能……
http://www.h-camel.com
MIT License
25.41k stars 3.26k forks source link

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

Open haizhilin2013 opened 5 years ago

haizhilin2013 commented 5 years ago

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

xiangshuo1992 commented 5 years ago

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

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

异或取值

a ^= b;
b ^= a;
a ^= b;
chwech commented 5 years ago
let a = 1, b= 2
[a, b] = [b, a]
wenyejie commented 5 years ago

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

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

异或取值

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

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

myprelude commented 5 years ago
chenliwen123 commented 5 years ago
  • ES6
let [a,b] = [b,a]  
  • ES5
var a = 1,b = 2;
a = b+a;
b = a-b;
a = a-b;

ES 6 这个 优秀

seho-dev commented 5 years ago

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

vincent-yan commented 5 years ago

1:a ^= b; b ^= a; a ^= b;

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

在 2019年9月15日,下午3:13,LAO_SHEN notifications@github.com<mailto:notifications@github.com> 写道:

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

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/haizlin/fe-interview/issues/175?email_source=notifications&email_token=ABG6PUXYLHF4GJXAQSPTZ7LQJXOABA5CNFSM4HR54JIKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6XKY3Y#issuecomment-531541103, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ABG6PUUOD5FNV543LBYIXNDQJXOABANCNFSM4HR54JIA.

zxl-lxz commented 4 years ago
let a = 1;
let b = 2;
[a, b] = [b, a];
console.log(a, b); // => 2, 1
blueRoach commented 4 years ago

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

Alex-Li2018 commented 4 years ago
  1. 第一种

    let b = 1
    let c = 2
    let tmp
    tmp = b
    b = c
    c = tmp
  2. 第二种

    let a = 1;
    let b = 2;
    [a, b] = [b, a];
smile-2008 commented 3 years ago

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

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

异或取值

a ^= b;
b ^= a;
a ^= b;
OldSixLi commented 2 years ago

分享个新鲜的用法

let a = 0;
let b = 1;
a = [b, b = a][0];
console.log(a, b);
xiaoqiangz commented 2 years ago

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

wyy-g commented 2 years ago

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