开发者

coffeescript not implicitly returning "false"

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 t开发者_开发技巧his 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


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜