coffeescript没有隐含地返回"false"

Nik*_* So 3 coffeescript

我正在尝试向String原始类型/类添加一个方法,我可以从URL字符串中添加额外的参数

String::getUrlParams = ->                        # line 1 
    false unless ( params = @.split('?')[1] )    # line 2
    # ...
Run Code Online (Sandbox Code Playgroud)

在Chrome控制台中,当我故意用一串没有params的URL调用此方法时,我希望它只返回false.

"http://dns.com/".getUrlParams();
Run Code Online (Sandbox Code Playgroud)

但它通过第2行.

如果我改变第2行

   return false unless ( params = @.split('?')[1] ) # line 2`
Run Code Online (Sandbox Code Playgroud)

然后它返回false并在第2行停止该功能

知道为什么coffeescript没有返回false并在第一个版本中停止了这个功能吗?

谢谢

nag*_*isa 7

Coffeescript仅返回最后一个函数语句.如果某些语句后面有某些内容,您希望在函数中间返回,那么您应该明确地执行此操作.

- 短暂的想法 - 简而言之 - Coffeescript编译器不是那么聪明,可以预测,你可能想要或不想返回的东西.现在大多数编译器都适用.此外,它的非智能性避免了大多数错误,这些错误可能是由于过早回归造成的.