coffeescript和javascript中的三元(问号运算符)之间的区别?

时间:2014-12-21 17:29:54

标签: javascript coffeescript

我的代码中有这一行:

de: (_.max(data, (product) -> product.prices.de )).price.de

我首先要检查product.prices是否已定义,如果已定义则返回product.prices.de否则返回0。 在javascript中我会写这样的东西:

angular.isDefined(product.prices) ? product.prices.de : 0

但是当我在coffeescript中尝试相同的事情时,coffeelinter不接受它。任何提示? 使用查询运算符时coffeescript和javascript之间有区别吗?

修改

我可以写

de: (_.max(data, (product) -> product.prices?.de )).prices.de

但在这种情况下,如果product.prices不存在,则该函数返回null而不是0

1 个答案:

答案 0 :(得分:4)

CoffeeScript中的三元运算符只是一个if条件,因为CoffeeScript中的所有内容都是表达式。以下是:

condition ? something : somethingElse

变为:

if condition then something else somethingElse

请注意,在您的情况下,您不会写:

if product.prices then product.prices.de else 0

你可能想要:

product.prices?.de or 0