文章目录
  1. 1. 逗号-按用途分类
  2. 2. 作为分隔符
  3. 3. 作为操作符(运算符)
  4. 4. 示例与应用

逗号在javascript中很常见,那么这个有什么好说的呢?
先来看两个例子吧:

1
2
3
4
5
6
var num = (1, 2, 3);
console.log(num); // 3
function foo(){
alert(1, 2, 3);
};
foo(); // 1

这中间到底发生了什么呢,先来安利一下概念,然后再来分析好吧^_^.

逗号-按用途分类

在javascript中,根据逗号使用的主要形式我们姑且可以分做两类:

1
2
3
1、作为普通分隔符使用

2、作为操作符(运算符)使用

作为分隔符

直接上例子吧

1
2
3
4
5
6
7
8
//1-1
var a, b, c;
//1-2
var arr = [0, 1, 2, 3];
//1-3
function bar(arg1, arg2, arg3, arg4){
//balabala...
}

这些都是很直接的用于分隔作用的:变量与变量之间、数组元素与元素之间、函数的参数与参数之间。
所以上面的foo()中,由于alert()只接受一个参数,所以默认第一个参数,故返回1。

作为操作符(运算符)

逗号操作符 对它的每个操作对象求值(从左至右),然后返回最后一个操作对象的值

作为操作符时通常用于表达式中。当你想要在期望一个表达式的位置包含多个表达式时,可以使用逗号操作符。

上面(1, 2, 3)就是一个表达式,故从左至右,返回最后一个操作对象的值,故num = 3

示例与应用

为了能够更好的理解这两种分类,我们再来多看一些示例。

1
2
3
4
//2-1
for(var i=0,j=0,len=10;i<len;i++,j++){
//balabala...
}

这里前面var语句中的逗号就起了分隔作用,讲不同的变量声明结合起来;
而后面的i++,j++语句中的逗号则是作为操作符,表达式从左至右依次计算。

那么,我们将上面foo()修改为

1
2
3
4
5
//2-2
function foo(){
alert((1, 2, 3));
};
foo(); // 3

此时,我们来分析下:
首先因为(),所以会先计算(1, 2, 3),而这是一个表达式,根据其概念会返回最右边的操作数,故最终结果为alert(3);

当然,也会一些下面的情况,我们可以看看:

1
2
3
4
//2-3
var a = 1,2,3; //error: Uncaught SyntaxError: Unexpected number
var b = 1,''; //error: Uncaught SyntaxError: Unexpected string
var c = 1,'字符串'; //error: Uncaught SyntaxError: Unexpected string

这种情况浏览器会报错,逗号后面的字符串或数字没有声明;
那么如果我们修改一下呢?

1
2
3
4
5
//2-4
var a = (1,2,3); //3
var b = (1,''); //''
var c = (1,'字符串'); //字符串
var d = (1,); //error: Uncaught SyntaxError: Unexpected token )

结果是显而易见的。注意最后一种情况,这里没有第二个操作数,会报语法错误;
当然这里第二个(或者最右边的)操作对象为undefined、null、{}、’’都可以正常解析,不写则会报错。

我们再把2-1做一下修改:

1
2
3
4
//2-5
var a = 1,aa,bb,cc; //正常不会报错 a=1
var a = 1,aa,2,cc; //error: Uncaught SyntaxError: Unexpected number
var a = 1,aa,'',cc; //error: Uncaught SyntaxError: Unexpected string

这里,你会发现,作为分隔符作变量声明时,逗号后面的操作对象得是可以作为变量名的对象,否则会报错;而用作操作符时则无需担心这个。

说了这么多,我们来看看下面这个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//2-6
function zoo(){
return 1,2,3; //3
}

var i=0,j=1;
function(){
return ++i, j++; //1
}

var m = 1, n = 2;
function(){
return ++m, m+n; //4
}
`
文章目录
  1. 1. 逗号-按用途分类
  2. 2. 作为分隔符
  3. 3. 作为操作符(运算符)
  4. 4. 示例与应用