代码之家  ›  专栏  ›  技术社区  ›  Hemadri Dasari

nodejs中的三元算子

  •  3
  • Hemadri Dasari  · 技术社区  · 6 年前

    {true ? (
      console.log("I am true")      
    ) : (
      console.log("I am not true")
    )}
    

    同样的方法在下面的场景下不起作用,它抛出以下错误

      ^^^^ 
    

    {true ? (
      let text = "I am true";
      console.log(text);      
    ) : (
      console.log("I am not true")
    )}

    2 回复  |  直到 4 年前
        1
  •  7
  •   CertainPerformance    6 年前

    ? 或者 : 在条件(三元)中,运算符必须是 ,而不是声明。表达式计算为一个值。变量赋值,比如 let text = "I am true"; ,是一个 ,不是表达式-它 某物(指“我是真的”给 text 变量)而不是 评价 有点价值。

    当括号中的分号需要计算为表达式时,括号中也不能有分号。如果你 真正地 如果需要,可以使用逗号运算符,但有点混乱:

    let text;
    (true ? (
      text = "I am true",
      console.log(text)
    ) : (
      console.log("I am not true")
    ))

    但是条件运算符仍然不适合这种情况-条件运算符 评估 一个值(它本身就是一个表达式)。如果不打算使用结果值,则应该使用 if/else

    let text;
    if (true) {
      text = "I am true";
      console.log(text);
    } else console.log("I am not true");

    const condition = true;
    const text = condition ? 'I am true' : 'I am not true';
    console.log(text);

    (请参见条件运算的结果是如何 这里-它被分配到 变量。)

        2
  •  3
  •   Anthony    6 年前

    在三元运算符中不能这样赋值。您需要执行以下操作:

    let text = myCondition
                  ? "I am true"
                  : "I am not true"
    
        3
  •  0
  •   giovaniZanetti    4 年前
    let text;
    
    true ? (text = "I am true") : (text = "I am not true");
    
    console.log(text);