逗号运算符可以与一组表达式运算符组合使用,产生显着的效果,但其使用方式的演变却令人费解。部分原因是逗号在JavaScript中有许多其他含义。因此,为了让人理解,逗号在参与以下两个表达式时是一个简单的逗号运算符:左侧表达式和右侧表达式。这些表达式还包含其他运算符、变量和函数。逗号运算符有什么作用?它按顺序连接两个表达式,从左到右评估所有操作数,然后返回最后一个操作数的值。需要注意的是,逗号运算符不同于数组、对象和函数参数中的逗号。letx=10;x=(x--,x);console.log(x);//expectedoutput:9x=(20,30);console.log(x);//上面例子中的expectedoutput:30括号是必需的,因为逗号运算符在所有JavaScript中的优先级最低。如果没有括号,表达式可能会被修改为:x=(20),30;上面的语句最终会将20赋值给X并丢弃右侧表达式的值。说到这里,自然会想到为什么要用括号来赋值呢?直接赋值是不够的。答案是一些运算符和大多数函数都有副作用。例如,varr=(console.log(1),console.log(2),console.log(3),4);可以看到控制面板上显示了1、2、3,4赋值给了变量varr。在上面的例子中,如果你想替换逗号运算符,你也可以像这样使用分号:console.log(1);console.log(2);console.log(3);varr=4;不过,这里的关键是分号分隔语句,逗号分隔表达式,有时语句也是表达式。示例显示varvar1,var2,var3;var1=var2=10,var3=20;//Returnsinconsoleconsole.log(var1);//10(left-most)var1=(var2=30,var3=40);//Returns6inconsoleconsole.log(var1);//40(最右边)属性键的计算:(这个例子相当棘手)constmap={[1<<0]:"Batman",[1<<1]:"Superman",[1<<2]:"闪电侠"};console.log(map);//{'1':'蝙蝠侠','2':'超人','4':'闪电侠'}下面是一些用例逗号运算符的常见用例:同时声明多个变量:varx=0,y=0,z=0;列出数组字面量中的元素:[2,4,8,10,20,32]对象字面量的单独属性:{min:0,max:100}定义多个变量参数:functionmultiply(a,b){returna*b;}调用具有多个参数的函数:multiply(2,6)重组序列:const[lower,upper]=[0,1];重构对象:const{min,max}={min:0,max:100};导入多个模块成员:import{open,close}from"fs";导出多个模块成员:export{mkdir,rmdir};上述所有示例的语句构成都是正确的,并且都包含一个逗号,但它们都没有使用逗号运算符的实际用法。以下是我能想到的一些用例:一个预期的表达式被多个表达式替换的地方。以逗号分隔的多个表达式的结果值等于最后一个以逗号分隔的表达式的值。通常用于在JavaScript中编写功能代码。它也常用于在for循环中提供多个参数。//jisinitializedtosomeothervalue//astheforloopexecutesbothiandjareincremented//因为commaoperatorallowstwostatementstobeputinplaceofonefor(vari=0;i
