Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么咖啡脚本使用«;返回»;到处都是声明?_Javascript_Coffeescript - Fatal编程技术网

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
放在那里,因为执行最后一条语句的结果是返回的——根本没有考虑执行它的结果会是什么。