Javascript 这两个变量如何使用一行进行交换?
我不知道如何学习演示2,因为它对我来说很难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中的逗号运算符计算其左操作数,将其丢弃,并在计算后返回其右操作数。它唯一的用途是当左操作数有副作用(如修改变量的值)但您不想要其结果时
//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];