?
将 放在新行上实际上是错误的;即使它在实践中没有伤害。
原因是一个名为“<a href="http://www.ecma-international.org/ecma-262/7.0/index.html#sec-automatic-semicolon-insertion" rel="noreferrer">Automatic 的 JS 功能分号插入”。当var
语句以换行符结尾时(没有尾随逗号,这表明要遵循更多声明),您的 JS 解释器应自动插入分号。
该分号将具有IsAdminUser
分配一个布尔值的效果(即 的结果User.Privileges == AdminPrivileges
)。之后,一个新的(无效的)表达式将以您认为是三元运算符的问号开头。
如前所述,大多数 JS 解释器都足够聪明,可以识别出你不应该有一个换行符,并隐含地修复你的三元运算符。而且,在缩小脚本时,无论如何都会删除换行符。
因此,在实践中没有问题,但是您依赖于对常见 JS 引擎的隐式修复。最好像这样编写三元运算符:
var foo = bar ? "yes" : "no";
或者,对于更大的表达式:
var foo = bar ?
"The operation was successful" : "The operation has failed.";
甚至:
var foo = bar ?
"Congratulations, the operation was a total success!" :
"Oh, no! The operation has horribly failed!";