首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Coffeescript运行函数或读取变量

Coffeescript运行函数或读取变量
EN

Stack Overflow用户
提问于 2011-11-27 11:26:58
回答 1查看 3.9K关注 0票数 21

假设我有两个

代码语言:javascript
复制
msg = "Saved Successfully"

代码语言:javascript
复制
msg = -> "Saved #{@course.title} Successfully"

有没有办法在不知道msg是函数还是常规变量的情况下优雅地获得msg的值,而不是做

代码语言:javascript
复制
success_message = if typeof msg is 'function' then msg() else msg
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-27 23:32:53

这里有一个CoffeeScript速记,你可以利用它:

代码语言:javascript
复制
f?()

等同于

代码语言:javascript
复制
f() if typeof f is 'function'

这意味着你可以写

代码语言:javascript
复制
success_message = msg?() ? msg

这之所以有效,是因为如果msg不是函数,则msg?()的值为undefined

警告:如果msg()返回null,并将success_message设置为msg函数,则此操作将失败。

实际上,如果你打算在你的应用程序中这样做,你应该写一个实用函数:

代码语言:javascript
复制
toVal = (x) -> if typeof x is 'function' then x() else x
successMessage = toVal msg

如果您喜欢冒险,甚至可以将toVal附加到Object原型上。

票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8283431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档