针对自己平时比较容易忽略和容易犯错的运算符,做一个比较详细的学习!
条件(三元)运算符(?:)
基本格式 a ? b : c
基本应用
var a = 10; var b = 11;
a > b ? a++ : b++;
console.log(a+"\n"+b);
/*输出a=10,b=12*/
等价于
if (a > b) {
a++;
} else{
b++;
}
console.log(a+"\n"+b);
/*输出a=10,b=12*/
需要注意的是:条件运算符(?:)适合纯粹的求值操作,如果a为true就会返回b,否则返回c,故而条件运算符是需要返回值的,并且b和c必须是可赋值的表达式,不能是break,return..之类的语句,而且从效率上来看,(?:)形式必须求出b或c的值,而if()..else{}只需执行无需保存其返回值,如果忽略返回值得话,if()..else{}的执行效率高于(?:)条件运算符的
用法1:给变量赋值
var d=a > b ? a++ : 0;
console.log(d);
/*输出0*/
用法2:给变量赋值2
var a = 1; var b = 2;
var c;
a>b?c=a:c=b;
console.log(c);
/*输出2*/
用法3:连续判断
var a = 1; var b = 2;
var e=a>b?a+1:b>10?a-b:b-a>0?a:b
console.log(e);
/*输出1*/
用法4:执行多个动作,以逗号分隔,别忘了加()
var a = 1; var b = 2;
a>b?(console.log(a),a+b):(b+=a+b,console.log(b));
/*输出5*/