consider adding more "[no LineTerminator here]" to avoid problemcaused by omit the semicolon
Claus Reinke
claus.reinke at talk21.com
Fri Jun 22 06:40:10 PDT 2012
> var a = this.a //!!!! here no semicolon will be auto inserted
> [1,2,3].forEach(function(){
> // do something
> })
Consider
arr.map(function(..){..}) // no semicolon wanted here
[..]
> (function(){
> //do something
> })() //!!!! here no semicolon will be auto inserted
> (function(){
> //do something else
> })()
Consider
curried_async_function(..first argument set..) // no semicolon wanted
here
(function(result){..}) // callback argument
Unfortunately, while ASI creates obvious problems, those do
not seem to have obvious solutions. Not to mention that any
actual changes to ASI might break existing code.
My own favourite approach would link ASI to layout/indentation,
and introduce warnings instead of breaking code:
1 if ASI kicks in, but indentation suggests statement continuation,
issue a warning
2 if ASI does not kick in, but indentation suggests new statement,
issue a warning
Item 2 would cover your examples, without breaking mine,
while item 1 would cover another popular ASI trap:
return // no semicolon intended here
{..}
while still allowing for
return // semicolon intended here
dead_code()
Claus
More information about the es-discuss
mailing list