为什么(true?false?' 1'' 2'' 3')返回2?

时间:2017-08-23 00:38:39

标签: javascript ternary-operator

从以下JavaScript返回2的逻辑是什么?

true ? false ? '1' : '2' : '3'

4 个答案:

答案 0 :(得分:1)

查找运算符precedence

由于三元运算符右 - 关联,上述表达式将被解析为:

true ? (false ? '1' : '2') : '3'

Right - to - left associativity 表示最先执行最右边的操作员。

在我们的例子中,最右边的三元运算符是内部运算符,因此首先执行。

答案 1 :(得分:0)

这样想:

  1. 如果为true,则结果为false。 true ? false
  2. 如果为false,则结果为1. false ? '1'
  3. 否则,结果为2. : '2'
  4. 最后,我猜这个编译是因为它将语句分组为:true ? (false ? '1' : '2') : '3'。因此,如果您将第一个true转换为false,则应返回3.
  5. 希望有帮助......如果你还是不明白,请问!

答案 2 :(得分:0)

只是在这里添加,这就是表达式如何用if-else语句翻译

// Translated:
if (true) {
  if (false) {
    console.log(1)
  }
  else {
    console.log(2)
  } 
} else {
  console.log(3)
}

答案 3 :(得分:0)

?:是ternary operator

所以你的代码:

var x = true ? false ? '1' : '2' : '3'

是简写版:

var x;

if(true){
    if(false){
        x = '1';
    }else{
        x = '2'; // <= You will be here.
    }
}else {
    x = 3;
}