今天遇到一个比较奇怪的问题,问题如下:
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
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Expressions_and_Operators#Operator_precedence
运算符优先级
() new>* / %>+ ->?:>= += -= *= /= %= <<= >>= >>>= &= ^= |=>,call / create instance>multiply/pide>addition/subtraction>conditional>assignment>comma不清楚问题在哪里
C = A + B ? "ABC" : "CBA";
console.log(C); //输出 ABC
因为 C = A + B 不为空,所以为true