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; }
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 syntax extension will not break correct pre-ES6 code
> as far as I can tell. But I am not sure about new ES6 arrivals.
>
> In fact we can add even more generic form of function call:
>
> foo 1,2,"three";
>
The equivalent to:
foo(1, 2, bar("a", "b"))
is...
foo 1, 2, bar "a", "b"
?
CoffeeScript has this problem, too.
Rick
>
> that is an equivalent of foo(1,2,"three");
>
> In this case grammar may look like:
>
> function-call:
> <name-token> '(' <parameter-list> ')' // existing form
> <name-token> <parameter-list> // proposal
>
> Where <parameter-list> is comma ',' separated list of expressions.
>
> Just to reduce that bracketing noise in syntax.
>
> --
> Andrew Fedoniouk.
>
> http://terrainformatica.com
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss