Javascript 为什么咖啡脚本使用«;返回»;到处都是声明?
写这样的东西时:Javascript 为什么咖啡脚本使用«;返回»;到处都是声明?,javascript,coffeescript,Javascript,Coffeescript,写这样的东西时: $(document).ready -> doSomething() doSomething = -> alert('Nothing to do') 被编译成 $(document).ready(function() { return doSomething(); }); doSomething = function() { return alert('Nothing to do'); }; 据我所知,return语句用于值(字符串、数组、整
$(document).ready ->
doSomething()
doSomething = ->
alert('Nothing to do')
被编译成
$(document).ready(function() {
return doSomething();
});
doSomething = function() {
return alert('Nothing to do');
};
据我所知,return语句用于值(字符串、数组、整数…)
为什么coffeescript会这样做?如果未指定任何值,coffeescript将使用隐式返回 CS返回函数中最后一条语句的值。这意味着生成的JS将具有上一条语句的
返回值
,因为JS需要显式的返回值
return语句用于值(字符串、数组、整数…)
是的,这些值可以通过调用函数返回,如示例中的
doSomething()
或alert()
。值是否是执行方法的结果无关紧要。Coffeescript与Ruby一样,总是返回函数中的最后一条语句。最后一条语句的计算结果将始终为值(字符串、数组、整数等)或null
。无论哪种情况,返回结果都是完全有效的
要回答“为什么”coffescript会对所有函数执行此操作,而不是只对有值的函数执行此操作,原因很简单,因为在许多情况下,coffescript无法判断最后一条语句何时计算为值或
null
。始终在那里使用return
语句更安全、更简单,而且不会产生任何负面后果。如果你不在乎函数返回什么,你可以忽略返回的值。只需编写统一的脚本和返回警报(“无事可做”)代码>==返回;如果不在完整环境下执行,CS永远无法确定最后一条语句的计算结果是否为“或”null
。它将return
放在那里,因为执行最后一条语句的结果是返回的——根本没有考虑执行它的结果会是什么。