安全导航运算符(?.)只在Angular2中使用,也错误地称为Elvis运算符
这是一个Angular2的模板绑定方法,在javascript中不可用。
三元运算符(statement ? obj : obj)
当您想要检查条件并且如果该条件为真,则返回一个值,否则返回另一个值时,可以使用此操作符。
逻辑或运算符
当您想要根据值本身的存在或真实性来返回一个值(因此没有其他规则参与),它与三元运算符非常不同。
let displayName = user.name || "";
在上面的例子中,您正在说如果这些表达式中任何一个是真值,则返回它,而在下面的示例中:
let gender = user.male ? "male" : "female";
你所说的是:如果我的条件为真,则返回“男性”,否则返回“女性”。
Elvis运算符(?:)在JavaScript中不可用,但你可以在其他语言(如PHP)中找到它。它基本上与三元运算符相同,但更简化,在比较的左侧(真实的一侧)可以用作返回值的情况下:
因此:
let m = something ?: somethingElse // if in case of truthiness of `something` you want to return `something` , you can do this
等于:
let m = something ? something : somethingElse
编辑:
没有意义对它们进行比较,它们根本不做同样的事情。