在手工拆分压缩后的flexible源码时发现这样的代码
涨姿势啦,猜测这样的代码估计就是压缩工具造成,但也不妨让我们去MDN上扒一扒逗号操作符。
逗号操作符
对它的每个操作数求值(从左到右),并返回最后一个操作数的值。
语法
expr1, expr2, expr3...
参数
expr1, expr2, expr3...任一表达式。
描述
当你想要在期望一个表达式的位置包含多个表达式时,可以使用逗号操作符。这个操作符最常用的一种情况是如下方示例中的for循环中提供多个参数。
上面的代码使用逗号操作符一次递增/递减两个变量。需要注意的是,var语句中的逗号不是逗号操作符,因为它不是存在于一个表达式中。尽管从实际效果来看,那个逗号同逗号运算符的表现很相似。但确切地说,它是 var 语句中的一个特殊符号,用于把多个变量声明结合成一个。
x=8*2,x*4 /*先是x是16,最后返回值是64*/
(x=8*2,x*4),x*2 /*从左到右16,64,32最后返回值是32*/
x=(z=5,5*2) /*整个表达式为赋值表达式,它的值为10,z的值为5*/
x=z=5,5*2 /*整个表达式为逗号表达式,它的值为10,x和z的值都为5*/
var a = 10, b = 20;
function test(){
return a++, b++, 10;
}
var c = test();
console.log(a); // 返回11
console.log(b); // 返回21
console.log(c); // 返回10
alert(x, y, z)
//alert()是一个函数调用表达式,其中x, y, z是“参数列表”,参数列表优先于逗号操作符
//alert()只接收一个参数,其余参数都被忽略。结果alert函数输出第一个参数x
alert( (2*5, 2*4) ); // 通过圆括号运算符提升运算优先级,结果返回8