写这样的东西时:
$(document).ready ->
doSomething()
doSomething = ->
alert('Nothing to do')
编译成
$(document).ready(function() {
return doSomething();
});
doSomething = function() {
return alert('Nothing to do');
};
据我所知,return语句用于值(字符串,数组,整数......)
为什么coffeescript会这样做?
答案 0 :(得分:8)
如果没有指定,CoffeeScript会使用隐式返回。
CS返回函数中最后一个语句的值。这意味着生成的JS将具有最后一个语句的return
值,因为JS需要显式的return
。
return语句用于值(字符串,数组,整数...)
是的,可以通过调用函数返回这些值,例如示例中的doSomething()
或alert()
。这些值是执行方法的结果并不重要。
答案 1 :(得分:1)
Coffeescript与Ruby一样,总是返回函数中的最后一个语句。最后一个语句将始终计算为值(字符串,数组,整数等)或null
。在任何一种情况下,返回结果都是完全有效的。
回答'为什么' coffescript对所有函数执行此操作,而不仅仅是有值的函数,这只是因为在很多情况下,Coffeescript无法判断最后一个语句何时将计算为值或null
。在那里总是有return
声明更安全,更简单,并且没有任何负面后果。如果你不关心函数返回的内容,你可以忽略返回的值。