我有这个条件:
con1 ? (con2 || con3) ? "blue" : "white" : "green"
这是对该代码的正确解释吗?
if con1 = true , then "blue"
if con1 = false, then "white"
if con2 || con3 = true, then "green"
?
答案 0 :(得分:2)
JavaScript ternary operator的工作原理如下:
condtion?如果condition为true则返回值:如果condition为false则返回值
你所拥有的是" true"中的嵌套三元运算符。部分,所以你的代码:
con1 ? (con2 || con3) ? "blue" : "white" : "green"
可以被认为是这样分组:
con1 ? [ (con2 || con3) ? "blue" : "white" ] : "green"
因此,首先评估嵌套部分:
(con2 || con3) ? "blue" : "white"
如果con2
或con3
为真,"蓝色"退回
如果没有,"白色"被退回
那"蓝"或"白色"然后放置在嵌套三元组在整个表达式中的位置:
con1 ? "blue" or "white" : "green"
现在,如果con1
为真,"蓝色"或"白色" (返回嵌套三元中的任何一个)。
如果没有,"绿色"归还。
答案 1 :(得分:1)
if con1 is false then "green"
if con1 is true and con2 || con3 is true then "blue"
if con1 is true and con2 || con3 is false then "white"
说明:
条件相当于:
con1 ? ( (con2 || con3) ? "blue" : "white" ) : "green"
就像:
condition ? expr1 : expr2
如果condition为true,则执行expr1 else expr2。
因此,如果con1为真,它将评估: (con2 || con3) ? "blue" : "white"
否则返回"绿色"。
在Scott的评论后更新:
首先评估条件(con2 || con3) ? "blue" : "white" )
,然后根据返回的值评估con1 ? [value returned from con2 || con3) ? "blue" : "white"] : "green"