今天遇到一个比较奇怪的问题,问题如下:
var A = 'abc123', B = true, C;
console.log(B); //true
console.log(typeof (B ? "ABC" : "CBA")); //string
C = A + B ? "ABC" : "CBA";
console.log(C); //输出 ABC
//js会这样处理的
C = (A + B) ? "ABC" : "CBA";
console.log(C); //输出ABC
//处理方法
C = A + (B ? "ABC" : "CBA");
console.log(C); //输出 abc123ABC
var D = B ? "ABC" : "CBA";
C = A + D;
console.log(C); //输出 abc123ABC
不清楚问题在哪里
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operator_precedence
运算符优先级
() new
> * / %
> + -
> ?:
> = += -= *= /= %= <<= >>= >>>= &= ^= |=
> ,
call / create instance
> multiply/divide
> addition/subtraction
> conditional
> assignment
> comma
C = A + B ? "ABC" : "CBA";
console.log(C); //输出 ABC
因为 C = A + B 不为空,所以为true