【问题标题】:CoffeeScript: simplest way to check if a function returns dataCoffeeScript:检查函数是否返回数据的最简单方法
【发布时间】:2012-10-27 03:40:47
【问题描述】:

我有这样的功能:

getData = ->
  $('body').data('key')

我有另一个函数,我想使用第一个函数来检查是否有一些数据。我想要写的是这样的:

otherFunction = ->
  if getData()
    ...do something...

但是,在我的测试中,if function() 的声明总是正确的,因为那里有一些东西(一个函数)。所以上面的行不通。

我在这里尝试做的最干净的方法是什么,检查函数是否返回一些数据?

【问题讨论】:

  • if fn()if fn 相同。检查关于为什么“如果”总是正确的假设。
  • @pst,我是 JS 的新手,请您详细说明或链接到它们有何不同?
  • 1) 如何调用/调用函数?和; 2) 引用函数对象(例如用作回调)?
  • 对不起,我不明白你的意思。在我的代码中还是在一般情况下?或者你是在夸夸其谈?就像我说的,这里的 JS 新手 :)
  • 在 CoffeeScript 的 JavaScript 中。在这方面它们是相同的(语法略有不同)。我建议从教程开始。

标签: javascript jquery coffeescript


【解决方案1】:

类似:

if(getData() !== false) then do...

你需要在你的 getData 方法上有一个返回转义。

get data 是对象还是返回数据的方法?

【讨论】:

  • getData 是一个函数调用,几乎与我在示例中给出的一样,它查找存储在 HTML 中的数据属性。它就像一个访问器方法,我只是用它来节省大量的输入。
  • 好吧,知道函数返回的数据是布尔值还是值本身有点谨慎?
  • 就是值本身。无论如何,这就是目标。
【解决方案2】:

如果没有 data 属性,或者 dom 元素上的 data 属性为空,您的模式肯定会解析为 false(因为返回值错误)。

请参阅此示例:http://jsfiddle.net/wkGcW/1/

getData = ->
  $('div').data 'key'

getData2 = ->
  $('div').data 'foo', 'bar'

otherFunction = ->
  if getData()
    console.log 'yep'
  else
    console.log 'nope'  <--- Resolves false

  if getData2()
    console.log 'yep'   <--- Resolves true
  else
    console.log 'nope'

otherFunction()

您可能还有其他问题在起作用...

【讨论】:

  • 是的,我知道你是对的。我可能已经在某个地方留下了括号......感谢您的帮助!
猜你喜欢
  • 2012-01-04
  • 2019-05-09
  • 2013-12-03
  • 2019-05-22
  • 2021-01-23
  • 2019-11-06
  • 1970-01-01
  • 2017-03-30
  • 1970-01-01
相关资源
最近更新 更多