【发布时间】:2016-06-26 23:41:34
【问题描述】:
我正在制作使用 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);
如果 "o+=2" 返回 false,它应该会给我结果 "T" 或 "F"。但它返回的是 "78F",而不是那些。谁能解释一下它背后的逻辑。
【问题讨论】:
-
我建议不要嵌套三元运算符。虽然拥有单行代码总是很好,但如果您将其拆分为 if-else 语句,其他开发人员更容易理解。我曾经不得不处理一个包含多达 6 个嵌套三元组的应用程序。这是一个调试的野兽。
-
请用大括号
(和)区分表情,方便大家看。它很可能也会给你想要的结果。 -
嵌套三元组是个糟糕的主意..
-
我正在制作一个 javascript 编译器。我一般不会写这样的代码。但是如果没有语法错误,编译器应该从用户那里获取任何东西。
标签: javascript ternary-operator