Fun impossible Firefox JS challenge

Lasse Reichstein reichsteinatwork at gmail.com
Fri Apr 13 00:38:34 PDT 2012


On Thu, Apr 12, 2012 at 4:11 PM, gaz Heyes <gazheyes at gmail.com> wrote:
> On 12 April 2012 14:51, Lasse Reichstein <reichsteinatwork at gmail.com> wrote:
>>
>> On Thu, Apr 12, 2012 at 2:58 PM, gaz Heyes <gazheyes at gmail.com> wrote:
>> > function true(){alert('Call me');};
>>
>> Is this a deliberate Mozilla change, or just a bug ("true" being a
>> keyword and not valid as a function name in plain ECMAScript)?
>>
>> And, btw,
>>  /* MY CODE */
>>  tru\u0065();
>
>
> Haha nice try even with unicode escapes it still refers to "true" the
> boolean not the function.

I guess that depends on the version. I was testing in Firefox 9.0.1,
and it runs your function.

In any case, the example is invalid ECMAScript, and I expect it to be
fixed eventually (someone linked the Mozilla bug).

The current ES5 spec (and ES3 too) is ... vague ... on the meaning of
tru\u0065, which explains the different implementations, but in order
to "not break the web" the most common meaning has been to make it an
IdentifierName but not a keyword. I.e., only "true" can be the
keyword, but "tru\u0065" can be used as an identifier. I know I have
implemented that to match Safari and Firefox, where my personal
preference would be to throw a syntax error :).

/L


More information about the es-discuss mailing list