七种交换变量值的方法,看看你知道几种

开发 前端
你知道交换两个变量的值有多少种方法?我很惭愧,因为我只知道两种方法。事实上,至少有 7 种方法可以做到这一点,是不是有点太不可思议了?什么,你不相信我?我不会骗你的,跟我来!

1.使用临时变量交换两个值

这是每个前端开发工程师都应该知道的一种方法,我们可能在学生时代就学过这种技术。

let a = 1
let b = 2
// Use a temporary variable to store the value of b first
let temp = b
b = a
a = temp
temp = null
console.log('a', a, 'b', b)

这种方法的优点是非常简单易懂。缺点是需要多声明一个变量,这意味着程序需要占用更多的计算机内存。

2.使用ES6中的解构赋值

我相信大家对 ES6 已经很熟悉了,它有一个很棒的特性叫做解构。

使用解构功能,我们可以轻松交换两个变量的值。

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

我个人真的很喜欢这种方式了,我们不需要使用任何额外的代码来完成这项工作。

3.使用异或 (^)

如果你对它非常感兴趣,可以点击这里(链接)进行深入研究。

不过别着急,相信看完这张表的内容你就知道是怎么回事了:

即使我们只需要知道这两个知识点就足够了:

  • (“0”^任何值)等于这个值。
  • 100 ^ 100 等于 0
0 ^ 100 // 100
100 ^ 100 // 0

我想,你一定已经猜到该怎么做了!

let a = 1
let b = 2
a = a ^ b
// 1. => a ^ b ^ b
// 2. => a ^ 0
// 3. => b = a = 1
b = a ^ b
// 1. a ^ b => a ^ b ^ a
// 2. a ^ b ^ a => 0 ^ b
// 3. a = b = > 2
a = a ^ b
console.log('a', a, 'b', b)

4.使用加法交换两个变量的值

什么?你在搞笑吗?没有,你可以使用加法交换两个变量的值。

let a = 1
let b = 2
a = a + b // The value of a is a(1) + b(2) = 3
b = a - b // The value of b is a(3) - b(2) = 1
a = a - b // The value of a is a(3) - b(1) = 2
console.log('a', a, 'b', b)

5.使用减法交换两个变量的值

既然我们可以使用加法交换两个变量的值,为什么不试试减法呢?

let a = 1
let b = 2
a = a - b // The value of a is a(1) - b(2) = -1
b = b + a // The value of b is b(2) + a(-1) = 1
a = b - a // The value of a is b(1) - a(-1) = 2
console.log('a', a, 'b', b)

那么使用加法和减法到底有什么区别呢?朋友们,你们一定知道JavaScript中有一个最大的安全数,那么,如果我们使用加法,会不会超过这个数呢?是的,这个问题可以通过使用减法来避免。

6.使用对象交换两个变量的值

我们可以将对象用作交换两个变量的桥梁,并让它链接所有这些。

let a = 1
let b = 2
a = {
a: a,
b: b
}
b = a.a
a = a.b
console.log('a', a, 'b', b)

你能用数组来完成这个吗?

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

7.使用“,”逗号运算符

1).数组和“,”的组合:

let a = 1
let b = 2
a = [b, (b = a)][0]
// The code roughly goes through the following steps
// 1. b = a => b = 1
// 2. a = [ 2, 1 ]
// 2. a = [ 2, 1 ][0] => 2
console.log('a', a, 'b', b)

2).宾语与“,”的组合:

let a = 1
let b = 2
a = b + ((b = a), 0)
// The code roughly goes through the following steps
// 1. a = 2 + ((b = 1), 0) => b = 1
// 2. a = 2 + 0 => a = 2
console.log('a', a, 'b', b)


责任编辑:庞桂玉 来源: 大前端私房菜
相关推荐

2023-03-28 11:40:07

边缘计算云计算

2022-05-18 09:01:31

JavaScriptEvalErrorURIError

2018-01-30 17:54:37

数据库MySQLSQL Server

2010-09-16 17:47:49

2016-09-28 20:05:22

2021-12-09 20:30:17

变量面试方法

2011-12-16 14:45:36

JavaJSP

2014-05-13 09:56:24

数据挖掘

2022-10-27 08:09:33

2023-04-18 15:57:30

2010-01-21 10:41:58

2011-05-30 13:37:46

JSP

2017-02-05 10:51:13

2022-09-30 10:48:12

AR制造业

2009-07-23 16:50:04

2018-08-24 20:57:55

程序员编程语言Python

2022-05-10 08:08:01

find命令Linux

2020-01-14 08:00:00

.NET缓存编程语言

2021-07-02 10:43:52

IT人才首席信息官人才招聘

2009-10-29 16:32:24

查看Oracle用户的
点赞
收藏

51CTO技术栈公众号