giving up on NaN, with one patch

Sam Tobin-Hochstadt samth at
Wed Mar 27 04:46:20 PDT 2013

On Tue, Mar 26, 2013 at 10:58 PM, David Herman <dherman at> wrote:
> On Mar 26, 2013, at 7:19 PM, Sam Tobin-Hochstadt <samth at> wrote:
>> On Tue, Mar 26, 2013 at 10:15 PM, David Herman <dherman at> wrote:
>>> ## Fix 2: Patch the semantics of writing non-writable properties
>>> I agree with Sam that writing to a non-writable property is silly. We can fix the semantics so that it doesn't actually modify the value if SameValue holds. The only observable difference should be this NaN issue, which is what we wanted to fix in the first place.
>>> I'm fine with either fix, but note that if we go with Fix 2, there's a finer distinction in the language than SameValue.
>> Jeff Walden pointed out that the semantics don't actually have this
>> bug -- see the ValidateAndApplyPropertyDescriptor algorithm, which
>> doesn't update in the SameValue case.
> Ah, okay, even better. We still might want to modify the SameValue semantics in ES6 so that it truly is the finest distinction possible. But if it's not observable it doesn't matter.

I think that would be a mistake.  As Brandon showed, modern engines
silently treat writes of different NaN values to immutable fields as
no-ops, but changing SameValue would make that an error.  Similarly,
we plan to use SameValue in the definition of Map, and we really don't
want to distinguish different NaN values there.


More information about the es-discuss mailing list