"Pretty" function expression names
P T Withington
ptw at pobox.com
Mon May 4 14:58:31 PDT 2009
On 2009-05-04, at 17:39EDT, Brendan Eich wrote:
> On May 4, 2009, at 2:00 PM, P T Withington wrote:
>
>> On 2009-05-04, at 14:46EDT, Brendan Eich wrote:
>>
>>> On May 4, 2009, at 10:45 AM, P T Withington wrote:
>>>
>>>> Assuming we're allowed to speculate on futures here...
>>>>
>>>> I was thinking about improving debug-ability by adding
>>>> descriptive names to function expressions thusly,
>>>>
>>>> var myFun = function "my description here" (...) { ... };
>>>
>>> Is this better for your purposes than
>>>
>>> var myFun = function (...) { ... };
>>> myFun.prettyName = "my description here";
>>
>> Just that it's shorter and easier to type. It would be a shorthand
>> notation for setting the .name property of the function object
>> created. I wouldn't expect the function to be referenceable by the
>> name, but I'd want Function.toString to display it (as a string
>> literal).
>
> As Michael Haufe and Mike Wilson point out, this might leave some
> wanting to call the function by that name within its own body. I'm
> interested in why you wouldn't care about that use case -- because
> you can guarantee that myFun never varies?
>
> An intrinsic name for toString and reflection is a fine thing, but
> people tend to expect functions with names to be callable in some
> scope. There's the rub.
My real use case is passing an anonymous (non-recursive) function as
an argument. I don't actually know what identifier my function will
be bound to when it is called. If I need a recursive function _and_ a
pretty name, presumably I could use either your proposal or:
let x = function "pretty name" () { ... x() ... }
I see that people might expect to be able to say:
"pretty name"()
but I wasn't asking for that. (OTOH, there is precedent for using
string literals for attribute names that are not valid identifiers.)
> I'm adding strawman and harmony pages to the wiki based on existing
> discussions, so I'll roll up the function name proposal thread and
> add this item. Thanks.
Thanks!
More information about the es-discuss
mailing list