Assignment of global variables deleted by their RHS in strict mode

Kevin Gibbons kevin at
Wed Aug 26 22:34:40 UTC 2015

Filed at

On Wed, Aug 26, 2015 at 3:17 PM, Mark S. Miller <erights at> wrote:

> On Wed, Aug 26, 2015 at 2:55 PM, Kevin Gibbons <kevin at>
> wrote:
>> See the following test262 test:
>> (and related tests with update / compound assignment).
>> In short, it is possible to have a Reference to a global variable which
>> has been deleted. Normally, bare assignments to undeclared variables in
>> strict mode cause ReferenceErrors. However, calling PutValue on a reference
>> to a global variable which has been deleted since the reference was created
>> does not throw a ReferenceError in strict mode, even though, *at the time
>> of writing*, that variable does not exist.
>> As far as I can tell, this is true in ES5 as well as ES6, but none of
>> {V8, SpiderMonkey, JavaScriptCore, Nashorn} get it right. This is
>> consistent and makes sense, but is it intentional?
> Hmmm, interesting. It was not the intention of the strict mode design to
> allow this to slip by without a thrown error. If we had explicitly
> considered this issue during the early strict mode design, we definitely
> would have made this a thrown error of some sort. ReferenceError sounds
> good to me, but I can't say that we would not have decided on TypeError.
> Either seems plausible enough.
> I agree that the silent failure implied by the current spec is buggy.
> Please file a bug against the ES6 spec. We should correct this at least in
> the errata.
> Thanks for raising this!
> And thanks to André Bargull for writing that test case! I wish I was aware
> of it earlier.
> --
>     Cheers,
>     --MarkM
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list