是否可以调用函数并返回同一行:
foo() and return if conditon == true
而不是拆分成多行?我尝试使用return
突出显示以下错误:
error: cannot use a pure statement in an expression
答案 0 :(得分:2)
return
不是CoffeeScript中的表达式,and
的格式为:
expr and expr
由于return
不是表达式,因此如果没有看到您所看到的错误,就无法说出expr and return
。
有多种方法可以解决这个问题,您选择哪一种方法取决于您期望foo()
返回的内容以及您希望函数返回的内容。
如果你不关心你的回归,那就直接去做吧:
return foo() if(condition)
请记住,return
和return undefined
是相同的。
如果foo()
返回真值,那么您可以使用&&
(或and
):
return foo() && undefined if(condition)
如果foo()
返回falsey值,请切换为||
(或or
):
return foo() || undefined if(condition)
如果您不知道foo()
会返回什么(如果有的话),那么事情会变得很难看。如果CoffeeScript有comma operator like JavaScript does:
逗号运算符计算它的两个操作数(从左到右)并返回第二个操作数的值。
然后你可以说:
return foo(), undefined if(condition)
这不起作用,因为CoffeeScript没有逗号运算符。但是,您可以使用额外的功能来模拟它:
comma = (a, b) -> b
#...
return comma(foo(), undefined) if(condition)
或使用do
的SIF版本:
return (do -> foo(); return) if(condition)
或者您可以使用反引号在CoffeeScript中嵌入原始JavaScript:
return `foo(), undefined` if(condition)
或者您可以结合使用&&
和||
技术:
return (foo() || undefined) && undefined if(condition)
演示:http://jsfiddle.net/ambiguous/UQc7g/
我倾向于return foo() if(condition)
这么有限的信息。