Javascript 这两个变量如何使用一行进行交换?

Javascript 这两个变量如何使用一行进行交换?,javascript,arrays,Javascript,Arrays,我不知道如何学习演示2,因为它对我来说很难 //demo1.js var a=1; var b=2; var c; c=b; b=a; a=c; 日志(a);//a=2 日志(b);//b=1我能看懂这个。 //演示2.js 变量a=1,b=2; a=[b][b=a,0];//为什么?”0'是变量吗? log(a,b)//输出a=2,b=1 Javascript中的逗号运算符计算其左操作数,将其丢弃,并在计算后返回其右操作数。它唯一的用途是当左操作数有副作用(如修改变量的值)但您不想要其结果时

我不知道如何学习演示2,因为它对我来说很难

//demo1.js
var a=1;
var b=2;
var c;
c=b;
b=a;
a=c;
日志(a);//a=2
日志(b);//b=1我能看懂这个。
//演示2.js
变量a=1,b=2;
a=[b][b=a,0];//为什么?”0'是变量吗?
log(a,b)//输出a=2,b=1

Javascript中的逗号运算符计算其左操作数,将其丢弃,并在计算后返回其右操作数。它唯一的用途是当左操作数有副作用(如修改变量的值)但您不想要其结果时

[b] 定义包含b的数组

[b=a,0]计算b=a-因此b现在包含a的值。然后它就把它扔掉了。然后取[b]索引0处的元素,返回b。a现在包含存储在那里的b值,而不是b的最新值,因此我们的交换是成功的(尽管有些模糊)

  • b
    变量的值放入新数组中

  • 下一组方括号是用于获取索引的成员运算符。在这种情况下,该空间用于将
    a
    变量的值重新分配给
    b
    变量。之所以可以这样做,是因为
    b
    的原始值在数组中是安全的(从步骤1开始)

  • 用逗号运算符分隔,
    0
    索引然后用作所检索数组的实际值,如果您回想起来,它是原始的
    b
    值。然后通过行上的第一个
    =
    赋值将其分配给
    a

  • 总之,
    b
    被放入数组中,通过
    0
    索引检索并分配给左侧的
    a
    ,但在
    a
    分配给
    b
    之前(借用
    []
    成员操作符的空格)


    也可以这样写:

    a = [b, b = a][0];
    

    现在唯一的区别是数组的第二个索引用于赋值。这样可能会更清楚一点。

    虽然这很简洁,但请不要把它当作你真正应该做的事情来学习。这不是质量代码。非常感谢你的回答,太棒了。
    a = [b, b = a][0];