我的代码中有这一行:
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
答案 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