关于Javascript数组shuffle函数

时间:2016-02-24 06:39:20

标签: javascript jquery arrays

最近我从一些关于Javascript函数的网页上阅读了教程,该函数可以改组数组。但我完全不了解代码的某些部分。 例如:这里是js fiddle

这里我不明白这段代码

this[i] = this[j] + (this[j] = this[i],0);

这意味着什么(this[j] = this[i],0); ? 提前致谢

2 个答案:

答案 0 :(得分:3)

代码只是进行1行交换。

您熟悉标准交换,对吗?

A = 6,B = 10

X = A

A = B

B = X

现在B = 6,A = 10

看看你的教程代码

this[i] = this[j] + (...)表示不会立即执行作业。相反,必须首先计算括号。但是,浏览器会暂时记下this[j]的值,基本上将其复制到X.

现在可以计算

(this[j] = this[i],0),但是将括号返回的内容添加到外部this[j]? 0!所以在括号内,交换的第二步发生了,0被添加到临时X!

现在计算变为this[i] = this[j] + 0。交换的第三步!

答案 1 :(得分:2)

对于带逗号的任何表达式,执行所有表达式,并返回最后 表达式

var a = (1+1, 2+2, 3+3);
// a = 6

对于上述情况:

this[i] = this[j] + (this[j] = this[i], 0);

相当于:

var temp = this[j];
this[j] = this[i];
this[i] = temp + 0;

自动处理临时值,因为首先评估左侧(this[j])。

More details