我正在尝试向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并在第一个版本中暂停该功能?
谢谢
答案 0 :(得分:7)
Coffeescript仅返回最后一个函数语句。如果某些语句后面有某些内容,你想要在函数中间返回,那么你应该明确地这样做。
- 简短的想法 - 简而言之 - Coffeescript编译器并不那么聪明,可以预测,您可能想要或不想返回某些内容。现在大多数编译器都适用。此外,它的非智能性避免了大多数错误,这些错误可能是由于过早回归造成的。