逗号当分号用了?

var a,b;
a = 5, b = function () {
                console.log("ok");
            };

这样写没有问题啊。。。这里的逗号(第二个)该如何理解呢?
还有一种写法最近经常看到,不是很理解,如下:

x && (a=2,b=3);

假设x为真,那么a=2,b=3都会被执行吗?这里的逗号,圆括号是什么用法?

阅读 4.5k
4 个回答

第二个逗号和第二个问题的逗号就是从左到右依次赋值

  • a && b当a为true的时候,执行b,返回b的bool值。当a为false的时候,不执行b,返回false。

  • a || b当a为true的时候,不执行b,返回true。当a为false的时候,执行b,返回b的bool值。

括号就是为了把代码合为一体,表明是一个整体的表达式。

逗号是一种运算符。 从左到右执行。
//var a,b;声明里面的逗号只是省了一个var而已。

var a,b; 表示声明两个变量相当于 var a; var b; 也就是var可以声明多个变量,变量之间用逗号隔开。

x为真,后面的表达式才会被执行。如果x为假,就不会执行。你应该理解&&是短路运算,假如第一个表达式是false,就不会去检查第二个表达式了。
圆括号也是个运算符,可以看一下mdn上面的https://developer.mozilla.org...,里面逗号也是运算符,会依次执行,并最终返回最后一个操作对象的值,这里(a = 2, b = 3)将返回 3。

回答你第二个问题,=。=
假设x为真的话,后面的语句会执行,因为&&运算符执行顺序是:
command1 && command2
command1为true,执行command2

圆括号优先级最高,逗号运算符属于多重运算符,先计算左边的,再计算右边的,最后返回右边的值,举个栗子~

var a = 1, b = 2;
function commaTest1() {
    return a,b
}
function commaTest2() {
    return b,a
}
commaTest1(); // result: 2
commaTest2(); // result: 1
推荐问题
宣传栏