为啥在咖啡脚本的每个块的末尾都需要一个“未定义”?

Posted

技术标签:

【中文标题】为啥在咖啡脚本的每个块的末尾都需要一个“未定义”?【英文标题】:Why would you need a "undefined" at the end of every block in coffeescript?为什么在咖啡脚本的每个块的末尾都需要一个“未定义”? 【发布时间】:2017-03-28 16:10:51 【问题描述】:

我正在处理另一个团队最初开发的一个非常大的咖啡脚本文件。出于某种原因,文件中几乎每个代码块的末尾都有一个“未定义”。例如:

  someFunction = () ->
    ajaxReq(
      blah blah
      undefined
    )
    undefined

 $("#some_id").click((e)->
    e.preventDefault()
    blah blah
    undefined
  )

   $(".some_class").change(->
     blah blah
     undefined
   )

有人可以帮我理解他们为什么这样做,如果有必要吗?谢谢。

【问题讨论】:

relevant 【参考方案1】:

因为 CoffeeScript 返回函数的最后一个表达式。在 javascript 中,所有函数默认返回 undefined。在这些情况下,您不必写 undefined,因为您没有使用返回值,但如果您使用并希望它保持一致,则必须返回 undefined

【讨论】:

您也可以使用不带参数的显式return 语句。

以上是关于为啥在咖啡脚本的每个块的末尾都需要一个“未定义”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 __del__ 在 with 块的末尾被调用?

为啥 rails 对咖啡脚本文件使用 .js.coffee 扩展名,因为它们无论如何都不能包含 JavaScript 代码?

为啥“使用严格”导致函数未定义

为啥将脚本标签放在正文标签的末尾是好的?

避免使用promises中的内存泄漏并在咖啡脚本中循环(无需等待)

无法找出为啥该值未定义