思考
关于逗号选择器并不是很重要的一个知识点,但是我在写这篇博客查阅资料的时候发现一个很奇怪的问题。
在《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高级程序设计》
原文地址:https://www.cnblogs.com/nyw1983/p/12236852.html