Arn*_*nab 6 javascript ternary-operator
我正在使用C#编译javascript块的小实用程序.我试图了解三元运算符的执行流程.现在,当我使用Chrome或Firefox运行JavaScript时:
var k = 27;
var o = 78;
var a = k < 100 ? o+=2 > 11 ? "T" : "F" : o < 100 ? "J" : "P";
alert(a);
Run Code Online (Sandbox Code Playgroud)
如果"o + = 2"返回false,它应该给我结果"T"或"F".但不是那些它返回"78F".任何人都可以向我解释它背后的逻辑.
基于运算符优先级表:
赋值运算符的优先级低于比较运算符.
所以你的代码将被评估如下,
true?o + = 2> 11?"T":"F":o <100?"J.P";true?o + = false?"T":"F":o <100?"J.P";true?o + = "F":o <100?"J.P";true? "78F":o <100?"J.P";"78F"您可以通过使用括号对条件进行分组来纠正行为,
var a = (k < 100) ? (o+=2) > 11 ? "T" : "F" : (o < 100) ? "J" : "P";
console.log(a); // T
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |