抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

前言

开发时突然遇到js语句里很多逗号,一下子搞蒙了.才想起来,没有仔细研究过这个东西.

简单说明

直白的说,没有return时,返回最左边结果,有return时返回最右边结果,当return最后一个参数为void 0,将只执行操作无返回

《javascript权威指南(6版)》说逗号运算符(,):先计算左边的操作数,然后计算右边的操作数,最后返回右操作数的值。
比如 var a=(1+1,2+2,3+3); 结果是6。
可是当逗号出现在其他的地方,好像就不是先算左边的,再算右边的,返回右边的了。
比如函数调用中,Math.max(x,y,z)。这里的逗号就是分隔函数参数。
还有声明变量时,var a=1,b=2,c=3。这里的逗号也是起分隔的作用。
请教各位逗号“,”应该怎么去理解?难道是依据逗号使用环境而定?
谢谢各位,求解惑,逗号让我感觉很晕。
网上找的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
alert(2*5, 2*4)     //输出10而不是8  函数接收第一个参数,也说明逗号级别比较低
alert((2*5, 2*4)); // 输出8 ()是返回了,相当于隐藏了return 所以返回最右边操作数的值


var a = 10, b = 20;
function CommaTest(){
return a++, b++, 10;
}
var c = CommaTest();
alert(c); 返回10`

//这里顺便再提下 void 0 如果想要无返回值,只进行操作.那么这么写 return a++, b++, 10, void 0;
//这样将返回空

参考文章

http://blog.csdn.net/wl110231/article/details/8162732

评论