coffeescript没有隐含地返回“false”

时间:2011-09-11 08:03:34

标签: coffeescript

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

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

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

"http://dns.com/".getUrlParams();

但它会通过第2行。

如果我将第2行更改为

   return false unless ( params = @.split('?')[1] ) # line 2`

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

知道为什么coffeescript没有返回false并在第一个版本中暂停该功能?

谢谢

1 个答案:

答案 0 :(得分:7)

Coffeescript仅返回最后一个函数语句。如果某些语句后面有某些内容,你想要在函数中间返回,那么你应该明确地这样做。

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