Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript交换两个对象a、b,哪种方式更好?_Javascript_Swap - Fatal编程技术网

Javascript交换两个对象a、b,哪种方式更好?

Javascript交换两个对象a、b,哪种方式更好?,javascript,swap,Javascript,Swap,在js中获得3种交换两个对象a和b的方法,但不确定它们之间是否有任何差异,以及哪一个更好 一, 二, 三, 定义“更好” 就个人而言,为了可读性,我会说第一个例子 如果我有2或3块白板,我可能会遵循第二个例子……第三个例子应该是死刑;) 定义“更好” 就个人而言,为了可读性,我会说第一个例子 如果我有2或3块白板,我可能会遵循第二个例子……第三个例子应该是死刑;) IMO,更好的方法是: var a = 1; var b = 3; [a, b] = [b, a]; console.log(a)

在js中获得3种交换两个对象a和b的方法,但不确定它们之间是否有任何差异,以及哪一个更好

一,

二,

三,

定义“更好”

就个人而言,为了可读性,我会说第一个例子

如果我有2或3块白板,我可能会遵循第二个例子……第三个例子应该是死刑;)

定义“更好”

就个人而言,为了可读性,我会说第一个例子


如果我有2或3块白板,我可能会遵循第二个例子……第三个例子应该是死刑;)

IMO,更好的方法是:

var a = 1;
var b = 3;

[a, b] = [b, a];
console.log(a); // 3
console.log(b); // 1

资料来源:《国际海事组织》,更好的办法是:

var a = 1;
var b = 3;

[a, b] = [b, a];
console.log(a); // 3
console.log(b); // 1
资料来源:

ES6(Firefox和Chrome已经支持它(分解分配数组匹配)):但它的速度非常慢。

临时变量方法速度稍快,更通用,可读性也更高

ES6(Firefox和Chrome已经支持它(分解分配数组匹配)):但它的速度非常慢。


温度变量法的速度稍快,更通用,可读性也更高

第三种方法在2015年之前是最简单的:pYep,但现在是2018年:)我总是尽可能倾向于可读性Ald Reagan:d第三种方法在2015年之前是最简单的:pYep,但现在是2018年:)只要可能,我总是倾向于可读性罗纳德·里根:关于边缘呢?关于边缘呢?@Xufox我的印象是,第一个数组确实创建了一个中间数组-
=
的右侧在对结果进行任何处理之前进行评估。解构后没有对数组的引用,但我认为已经创建了一个?@CertainPerformance哦,是的,它确实…@Xufox我的印象是第一个数组确实创建了一个中间数组-
=
的右侧在对结果进行任何处理之前进行了计算。解构后没有对数组的引用,但我认为已经创建了一个?@CertainPerformance哦,是的,它确实…
temp = a;
a = b;
b = temp;
var a = 1;
var b = 3;

[a, b] = [b, a];
console.log(a); // 3
console.log(b); // 1
[a,b] = [b,a]; 

b = [a, a = b][0]; // shorthand version