最近我从一些关于Javascript函数的网页上阅读了教程,该函数可以改组数组。但我完全不了解代码的某些部分。 例如:这里是js fiddle
这里我不明白这段代码
this[i] = this[j] + (this[j] = this[i],0);
这意味着什么(this[j] = this[i],0);
?
提前致谢
答案 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]
)。