说我有
msg = "Saved Successfully"
或
msg = -> "Saved #{@course.title} Successfully"
无论如何优雅地获取msg的值而不知道它是函数还是常规变量而不是
success_message = if typeof msg is 'function' then msg() else msg
答案 0 :(得分:37)
你可以使用CoffeeScript的简写:
f?()
相当于
f() if typeof f is 'function'
这意味着你可以写
success_message = msg?() ? msg
这是有效的,因为如果msg?()
不是函数,undefined
的值为msg
。
警告:如果msg()
返回null
,将success_message
设置为msg
函数,则会失败。
真的,如果您要在应用程序中执行此操作,则应编写实用程序函数:
toVal = (x) -> if typeof x is 'function' then x() else x
successMessage = toVal msg
如果你喜欢冒险,你甚至可以将toVal
附加到Object
原型。