On Fri, Jul 12, 2013 at 7:02 AM, Rick Waldron <[email protected]> wrote:
>
>
>
> On Fri, Jul 12, 2013 at 12:22 AM, Andrew Fedoniouk
> <[email protected]> wrote:
>>
>> Quite often I see  constructions like this:
>>
>> foo({one:1,two:2});
>>
>> so call of function with single parameter - object literal.
>> Idiom named "Poor man named arguments passing"
>>
>> Idea is to extend existing JS/ES syntax calls to support
>> simple form of the call above:
>>
>> foo {one:1,two:2 };
>>
>> Semi-formally that syntax looks like:
>>
>> function-call:
>>    <name-token> '(' <parameter-list> ')' // existing form
>>    <name-token> <object-literal> // proposal
>
>
> Existing grammar:
>
>
>   CallExpression Arguments
>
>   Arguments :
>     ( )
>     ( ArgumentList )
>
>
> To add ObjectLiteral, at very least the grammar would need to have a
> NoLineTerminator between CallExpression and Arguments, which breaks extant
> code.

Yes, NoLineTerminator is required for non-strict mode (that ugly
semicolon elision
strikes again)

Even in non-strict mode this code:

  function foo(obj) { return 1; }

  var c = foo { one:1 };

produces parsing error before the '{' - "semicolon required".

The same kind of error is in this case too:

  function foo(p1,p2) { return 1; }

  var c = foo 1,2;

So that syntax change will be backward compatible - it will
not change semantic of existing valid code.


--
Andrew Fedoniouk.

http://terrainformatica.com
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to