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