On Fri, Jul 12, 2013 at 6:45 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
>
>
> Given:
>
>   function foo(){ return 1; }
>
>
> This is a valid function call:
>
>   foo
>   ()
>
>   // 1;
>
> But this is valid, too (though, not a function call):
>
>   foo  <-- identifier
>   {} <-- empty block
>
>   // function foo() { return 1; }
>

This construction

  foo {};

is an equivalent of:

  foo({});

but not

  foo();

To call function with empty param list you still need empty '('')' brackets.

>
> Also, I could be wrong, but wouldn't there need to be a way to disambiguate
> UnaryExpression?
>
>   typeof foo { one: 1, two: 2 }
>
> Maybe this is not an issue, or easily dealt with?

This is not an issue. Parsed exactly the same as:
 typeof foo({ one: 1, two: 2 })



--
Andrew Fedoniouk.

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

Reply via email to