被忽略的逗号操作符

2019-04-2782次阅读javascript

在手工拆分压缩后的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
上一篇: css中使用:not()选择器为最后一个元素去除边框  下一篇: Gulp sass报错File to import not found or unreadable: common  

被忽略的逗号操作符相关文章