Reputation: 16821
I am trying to add a method to the String primitive type/class where I can extra params from a URL string
String::getUrlParams = -> # line 1
false unless ( params = @.split('?')[1] ) # line 2
# ...
In Chrome console, when I deliberately call this method with a string of URL without params, I expect it to just return false.
"http://dns.com/".getUrlParams();
but it goes pass through line 2.
if I change line 2 to
return false unless ( params = @.split('?')[1] ) # line 2`
then it does return false and stops the function at line 2
Any idea why coffeescript isn't returning false and halts the function in the first version?
Thank you
Upvotes: 3
Views: 1672
Reputation: 720
Coffeescript returns only the last function statement. If something follows some statement, that you want to return in middle of function, then you should do that explicitly.
--Short thoughts-- In short - Coffeescript compiler is not that smart, to predict, where you may want or may not want to return something. And same applies to most compilers now days. Also it's non-smartiness avoids most of mistakes, which would be caused because of premature return.
Upvotes: 7