CoffeeScript - 这种奇怪的“返回”事件是什么意思?

时间:2012-07-19 07:05:57

标签: javascript coffeescript

考虑以下CoffeeScript:

$ ->
  if localStorage["Flag1"] isnt "Done"
    localStorage["Flag1"] = "Done" # Flagged on first page loading
  $(".start").click ->
    if localStorage["Flag2"] isnt "Done"
      localStorage["Flag2"] = "Done" # Flagged on first click interaction

编译成:

$(function() {
  if (localStorage["Flag1"] !== "Done") {
    localStorage["Flag1"] = "Done";
  }
  return $(".start").click(function() {
    if (localStorage["Flag2"] !== "Done") {
      return localStorage["Flag2"] = "Done";
    }
  });
});

在渲染的JavaScript中有两种奇怪的“返回”。他们做了什么,他们将如何影响脚本的运行?谢谢!

1 个答案:

答案 0 :(得分:2)

它们不会影响脚本的运行。第一个return将从DOM ready事件处理程序返回$(".start")(因为jQuery click方法返回jQuery实例)。因为它是一个在某一点运行的回调,所以你无法对该返回值做任何事情。

第二个return将在设置"Done"属性后返回localStorage,但是再次,因为它从回调(此次点击事件处理程序)返回,您将不会能够对返回的值做任何事情。

我相信CoffeeScript会return每个函数中最后一个表达式的值,这就是为什么你在输出中看到那些return语句的原因。来自文档:

  

即使函数总是返回它们的最终值,它也是   可能并鼓励他们尽早从功能体写作中回归   当你知道你的时候,明确的回报(return value)   完成。