CoffeeScript - 这种奇怪的"Return"事件意味着什么?



考虑以下 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 中植入了两个奇怪的"返回"事件。它们做什么,它们将如何影响脚本的运行?谢谢!

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

设置localStorage属性后,第二个return将返回"Done",但同样,由于它是从回调(这次是单击事件处理程序(返回的,因此您将无法对返回的值执行任何操作。

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

尽管函数将始终返回其最终值,但它是两者 可能并鼓励从功能体写作中尽早返回 出显式返回(return value(,当你知道你是 做。

最新更新