假设我有两个
msg = "Saved Successfully"
或
msg = -> "Saved #{@course.title} Successfully"
有没有办法在不知道msg是函数还是常规变量的情况下优雅地获得msg的值,而不是做
success_message = if typeof msg is 'function' then msg() else msg
发布于 2011-11-27 23:32:53
这里有一个CoffeeScript速记,你可以利用它:
f?()
等同于
f() if typeof f is 'function'
这意味着你可以写
success_message = msg?() ? msg
这之所以有效,是因为如果msg
不是函数,则msg?()
的值为undefined
。
警告:如果msg()
返回null
,并将success_message
设置为msg
函数,则此操作将失败。
实际上,如果你打算在你的应用程序中这样做,你应该写一个实用函数:
toVal = (x) -> if typeof x is 'function' then x() else x
successMessage = toVal msg
如果您喜欢冒险,甚至可以将toVal
附加到Object
原型上。
https://stackoverflow.com/questions/8283431
复制相似问题