var notice = "She is" + present ? "" : "n't" + " here.";
与
var notice = "She is" + (present ? "" : "n't") + " here.";
在摆弄之后,我注意到它只是
present ? "" : "n't"之前的字符串弄乱了它。但是我没有解释为什么,如果我要警告通知(当然还有真实或虚假),它会在第一个例子中显示为空白,并且与第二个例子一起工作正常。
答案 0 :(得分:0)
当你写:
var notice = "She is" + present ? "" : "n't" + " here.";
addition operator +
takes precedence,因此解析器会将其视为:
var notice = ("She is" + present) ? "" : ("n't" + " here.");
表达式"She is" + present
返回true,无论 present 的值如何,因为它被转换为表达式中的字符串(并且ToBoolean应用于任何非空字符串返回true),因此完整表达式返回""
,即条件运算的真实一面。
当分组运算符应用于条件部分时,它优先于所有条件,因此首先计算条件:
var notice = "She is" + (present ? "" : "n't") + " here.";