这篇文章主要为大家展示了如何使用JavaScript交换变量,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。
让; 让b; [a, b]=[1, 2, 3]; 一个;//=比;1 b;//=比;2
<代码> [a, b]=[1, 2, 3]> 代码是对<代码>[1,2,3]> 代码数组进行解构的解构赋值。<代码>[1,2,3]> 代码的第一项<代码> 1> 代码分配了一个变量<代码> 代码>,第二项<代码> 2> 代码对应地分配了<代码> 代码>。
知道如何解构数组,可以很容易地使用它交换变量。让我们使用解构分配交换变量<代码> 代码>和<代码> b> 代码:
让=1; 让b=2; [a, b]=[b, a]; 一个;//=比;2 b;//=比;1
第一步,在解构的右侧,创建一个临时数组<代码> [b]> 代码(其值为<代码>(2,1)> 代码)。
然后发生临时数组的解构:<代码> [a, b]=(2, 1)> 代码。变量<代码> 代码>分配了2 <代码> 代码>,<代码> b> 代码分配了<代码> 1> 代码。已经完成了<代码> 代码>和<代码> b> 代码的交换。
我喜欢这种解构方法,因为它简短而富有表现力:交换仅用一条语句执行。它适用于任何数据类型:数字,字符串,布尔值,对象。
对于大多数情况,我建议使用解构赋值来交换变量。
2。临时变量
使用临时变量交换变量是经典的。顾名思义,这种方法需要一个额外的临时变量。
让我们使用临时变量<代码>温度> 代码交换变量<代码> 代码>和<代码> b> 代码的值:
让=1; 让b=2; 让温度; temp=一个; a=b; b=temp; 一个;//=比;2 b;//=比;1
3。加减法
您可以交换变量而无需使用额外的内存(例如临时数组或变量)。
以下示例使用加法<代码> +> 代码和差分<代码> - 代码>算术运算符交换变量<代码> 代码>和<代码> b> 代码:
让=1; 让b=2;=a + b; b=a - b; 一个=a - b; 一个;//=比;2 b;//=比;1
最初,<代码> 代码>为<代码> 1 代码>,<代码> b 代码>为<代码> 2> 代码。让我们看一下3条语句如何执行交换:
- <李> <代码>=a + b> 代码赋予<代码> 代码>值<代码> 1 + 2> 代码。李> <李> <代码> b=a - b 代码>为<代码> b> 代码赋值<代码> 1 + 2 - 2=1> 代码(b <代码> 代码>现在为<代码> 1> 代码)。李> <李> <代码>=a - b 代码>为<代码> 代码>分配值<代码> 1 + 2 - 1=2 代码>(<代码> 代码>现在为<代码> 2> 代码)。李>
最后,<代码> 代码>为<代码> 2> 代码,b <代码> 代码>为<代码> 1> 代码。已经完成了<代码> 代码>和<代码> b> 代码的交换。
尽管这种方法不使用临时变量,但有很大的局限性。
- <李>首先,您只能交换整数。李> <李>其次,在第一步<代码>=a + b 代码>进行加法时要注意数字溢出(总和必须小于<代码> Number.MAX_SAFE_INTEGER> 代码)。李>
4。按位异或运算符
如果操作数不同,则XOR运算符的计算结果为真的。提醒一下,这是XOR真值表:
aba ^ b000110011101在JavaScript中,按位异或运算符<代码> n1 ^ n2 代码>对<代码> n1 代码>和<代码> n2> 代码数字的每一位执行XOR操作。
举例来说,这是<代码> 5 ^ 7> 代码评估(评估)为<代码> 2> 代码的方式:
1 0 1(5的二进制) 1 1 1(7的二进制) ----- 0 1 0(5 ^ 7=2的二进制)
按位异或具有2个有趣的属性:
- <李> <代码> n ^ n=0 代码>:对相同数字执行的按位异或为<代码> 0 代码>。李李> <> <代码> n ^ 0=n 代码>:对一个数字执行按位异或,零是相同数字。李>
这些XOR属性可用于交换变量。让我们看看如何交换<代码> 代码>和<代码> b> 代码变量:
让=1; 让b=2;=^ b; b=^ b;=^ b; 一个;//=比;2 b;//=比;1如何使用JavaScript交换变量