关于Javascript数组洗牌函数



最近我从一些网页上读到了关于洗牌数组的Javascript函数的教程。 但是代码的某些部分我没有完全理解。例如:这里是JS小提琴

这里我不明白这个代码部分

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

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

代码只是在进行 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.交换的第三步!

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

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])。

更多详情

最新更新