考虑以下 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
(,当你知道你是 做。