考虑以下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中有两种奇怪的“返回”。他们做了什么,他们将如何影响脚本的运行?谢谢!
答案 0 :(得分:2)
它们不会影响脚本的运行。第一个return
将从DOM ready事件处理程序返回$(".start")
(因为jQuery click
方法返回jQuery实例)。因为它是一个在某一点运行的回调,所以你无法对该返回值做任何事情。
第二个return
将在设置"Done"
属性后返回localStorage
,但是再次,因为它从回调(此次点击事件处理程序)返回,您将不会能够对返回的值做任何事情。
我相信CoffeeScript会return
每个函数中最后一个表达式的值,这就是为什么你在输出中看到那些return
语句的原因。来自文档:
即使函数总是返回它们的最终值,它也是 可能并鼓励他们尽早从功能体写作中回归 当你知道你的时候,明确的回报(
return value
) 完成。