var a,b;
a = 5, b = function () {
console.log("ok");
};
这样写没有问题啊。。。这里的逗号(第二个)该如何理解呢?
还有一种写法最近经常看到,不是很理解,如下:
x && (a=2,b=3);
假设x为真,那么a=2,b=3都会被执行吗?这里的逗号,圆括号是什么用法?
var a,b;
a = 5, b = function () {
console.log("ok");
};
这样写没有问题啊。。。这里的逗号(第二个)该如何理解呢?
还有一种写法最近经常看到,不是很理解,如下:
x && (a=2,b=3);
假设x为真,那么a=2,b=3都会被执行吗?这里的逗号,圆括号是什么用法?
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
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.7k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
第二个逗号和第二个问题的逗号就是从左到右依次赋值
a && b
当a为true的时候,执行b,返回b的bool值。当a为false的时候,不执行b,返回false。a || b
当a为true的时候,不执行b,返回true。当a为false的时候,执行b,返回b的bool值。括号就是为了把代码合为一体,表明是一个整体的表达式。