coffeescript存在函数运算符其他声明?

时间:2012-04-16 04:09:12

标签: javascript coffeescript

在咖啡脚本中,在这样的函数上使用存在运算符:

myFunc?()

编译到

typeof myFunc === "function" ? myFunc() : void 0;

有没有办法优雅地定义代替“void 0”的内容?或者我必须全部写出来而不是使用原始符号吗?

1 个答案:

答案 0 :(得分:8)

您可以添加另一个存在运算符:

x = f?() ? 'pancakes'

如果f()返回nullundefined,则无效,但如果f()返回false,它将执行正确的操作。例如:

f = 'not a function'
console.log f?() ? 'pancakes'
# pancakes

f = -> 'is a function'
console.log f?() ? 'pancakes'
# is a function

f = -> null
console.log f?() ? 'pancakes'
# pancakes

f = ->
console.log f?() ? 'pancakes'
# pancakes

f = -> false
console.log f?() ? 'pancakes'
# false

演示:http://jsfiddle.net/ambiguous/f6yvN/1/

所以你可以接近你想要的东西,这可能足够接近,这取决于你期望函数返回的东西。