参见英文答案 >
How does [b][b = a,0] swap between a and b? 2个
我不知道如何学习demo 2,因为这对我来说很难.
//demo1.js
var a = 1;
var b = 2;
var c;
c = b;
b = a;
a = c;
log(a); // a = 2
log(b); // b = 1 I can read this one.
//demo 2.js
var a = 1, b = 2;
a = [b][b = a, 0]; // why? '0' is a varible?
console.log(a,b) //output a = 2, b =1
最佳答案
// v---- 1. v---- 3.
a = [b][b = a, 0];
// ^---^-- 2.
>将b变量的值放入新数组中.
>下一组方括号是用于获取索引的成员运算符.在这种情况下,该空间用于将变量的值重新分配给b变量.这可以完成,因为b的原始值安全地在数组中(从步骤1开始).
>用逗号运算符分隔,然后将0索引用作要检索的数组的实际值,如果您将调用该值,则为原始b值.然后通过线上的first =赋值将其分配给a.
总而言之,b被放入数组中,并通过0索引检索并分配给左边的a,但不是在分配给b之前(借用[]成员运算符的空间).
这也可以这样写:
a = [b, b = a][0];
现在唯一的区别是Array的第二个索引用于执行赋值.可能有点清楚这样.