JavaScript 逗号运算符

Posted 牛译伟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 逗号运算符相关的知识,希望对你有一定的参考价值。

   思考  

关于逗号选择器并不是很重要的一个知识点,但是我在写这篇博客查阅资料的时候发现一个很奇怪的问题。

在《javascript高级程序设计》这本书中说:逗号选择器多用于声明多个变量,除此之外还可以用于赋值。

在 MDN中并不认为 var 语句中的逗号属于逗号操作符,而将其看作是 var 语句中的特殊符号。

姑且认为var中的逗号可以理解为逗号分隔,不是逗号运算符。                         

 

使用逗号运算符可以在一条语句中执行多个操作。

在《JavaScript高级程序设计》这本书中认为逗号操作符,多用于声明多个变量,例如:

var a = 1 , b = 2 , c=3;

逗号操作符还可以用来赋值,操作符会返回表达式的最后一项,例如:

var aa=(5,4,3,2,1,0)

 

MDN

逗号操作符 对它的每个操作数求值(从左到右),并返回最后一个操作数的值

语法:

表达式1,表达式2,表达式3……

表达式运算符和操作数(或是变量)的组合就是表达式,

  使用逗号运算符是为了把几个表达式放在一起。整个逗号表达式的值是系列中最后一个表达式的值。

  从本质上讲,逗号的作用是将一系列运算按照顺序执行。最右边的那个表达式的值将会作为整个逗号表达式的值,其他表达式的值将会被丢弃。

当想要在放置一个表达式的位置包含多个表达式时,可以使用逗号操作符。这个操作符最常用的一种情况是:for 循环中提供多个参数。

实例:

下面的代码使用逗号操作符第一次递增/递减两个变量。

需要注意的是,var 语句中的逗号 不是 逗号运算符,因为它不是存在于一个表达式中的。

尽管从实际效果来看,var语句中的逗号和逗号运算符的表现相似。但是确切地说,它是 var 语句中的特殊符号,用于把多个变量组合成一个。

for(var i=0,j=9;i<j;i++,j--){
//for循环中的第一个逗号是var语句的一部分
//第2个操作符是逗号操作符
//将两个表达式 i++ 和 j-- 放在一起
   document.write(i+j);
}

 

    处理后返回     

另一个使用逗号操作符的例子是在返回值之前处理一些操作。

例如下面的代码,只有最后一个表达式被返回,其他的都是被求值。

function fun(){
   var i = 0;
   return(i+=1,i);
}
fun() //只有最后一个表达式会被返回,其他的都是求值

最后结果返回的是1,之所以返回的是1,是因为逗号运算符会返回的是最后一个表达式,所谓表达式即为运算符和操作数(或是变量)

i += 1属于表达式,所以return 的结果是1。

 

参考文章:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Comma_Operator

《JavaScript高级程序设计》

以上是关于JavaScript 逗号运算符的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 逗号运算符

javascript(ECMAScript)中逗号运算符的基本使用方法

在 for 循环中声明的逗号运算符

JavaScript 编码风格

Javascript中带逗号的数字

为啥以下代码中逗号运算符的工作方式有所不同?