In Lisp it makes sense to allow binding keywords because there's no such thing 
as a keyword: once you bind it, it's a variable and you can refer to it. In JS 
it's impossible to refer to it as a variable so it's just an (un)attractive 
nuisance.

The only place where I could see this being arguably useful in ES6 is:

    // foo.js
    export function function() { }

    // main.js
    module foo from "foo";

    foo.function();

But that's still probably not advisable, since it means you can't import the 
name:

    import { function } from "foo";
    // d'oh

So I don't see any reason why a person shouldn't just use rebinding for that 
use case:

    // foo.js
    function function_() { }

    export { function_ as function };

To wit: I say leave it out.

Dave

On Aug 21, 2013, at 4:13 PM, Jason Orendorff <jason.orendo...@gmail.com> wrote:

> The ES6 draft says:
> 
>    MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
>    PropertyName : IdentifierName
> 
> This means a method name can be a keyword: `obj = {if() {}}`. This is
> consistent with other property names (`{if: true}` is allowed), but
> inconsistent with other function names (`function if(){}` is not
> allowed).
> 
> Why not allow keywords as function names, too?
> 
> -j
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to