Re: ES5 ���� '===' �ܹ��� SameValue

SameValueȷʵӦ�������ģ���Ϊ�����ֽڱȽϡ���������NaN�������������ֽڱ�ʾ������Ӧ�ûᱻ��һ��Ϊͬһ����ʾ����

�� === / !== ����ƣ�������Ҫ�Ǵӳ���Ա�ķ�����������+0 !== -0��������Υ��������˵�ֱ���ġ�����Math.round(-0.1)
=== 0����false�����˿�������


�������ᵽ��������-0�ķ���������ƪblog���Ѿ����ᵽ��http://www.wirfs-brock.com/allen/posts/128
��Ȼԭ���� x === 0 && 1/x === -Infinity �����Ǹ��򵥵IJ��Է�����

2011/12/21 Kang-Hao (Kenny) Lu <kennyluck@w3.org>

> �L֮ʯ�� ECMAScript5 Ҏ���п�����һ������ '===' �õ����㷨 ��
> SameValue[1]���������� '===' �IJ�ͬ̎��춣�
>
> * SameValue(NaN, NaN) �� true
> * SameValue(+0, -0) �� false
> * SameValue(-0, +0) �� false
>
> ���� '===' �෴��
>
> [1] http://www.w3.org/html/ig/zh/wiki/ES5#samevalue
>
> ���о���һ�£��l�F�@���Y�������������@����ʽ��򞣺
>
> (function(){
>    'use strict';
>    var x = {data: +0};
>    Object.freeze(x);
>    Object.defineProperty(x, "data", {value: -0});
> })() // ���e���ɂ��� NaN �t������
>
> Ԕ����ጿ��ԅ��� [[DefineOwnProperty]] �����㷨[2]���؄e�� 10.a.ii����/
> ��/�п��ܿ��Բ��� 'use strict' �� Object.defineProperty �����@�N��򞣬��
> ��Ҫ���� [[DefineOwnProperty]] �Ļ؂�ֵ����ʲ�N���^�[�޵ĵط���arguments
> ֮ģ������^���^�m�о��ˡ��� test262[3] ���^�����˿���ȥ�e�����ҿ���
>
> [2] http://es5.github.com/#x8.12.9
> [3] http://test262.ecmascript.org/
>
> Ԓ�f�؁���SameValue(+0, -0) �� false ��ԭ��ԓ�����c���ăȲ��������P
> �ɣ����� SameValue ��ԓ�����ġ��ҵĆ��}�ǣ�NaN !== NaN �Ҵ�ſ�����
> �⣬-0 === 0 ��������ʲ�N�أ�
>
> ���� HTML5 Ҏ�����gȺ���߀�U����Ҏ��ӑՓ�ģ���һ�c�������@�����_�]��Ⱥ
> �����ς��Y��߀ӑՓ��һ���Y�ݵ� AppCache��������Ⱥ�e���˶�����ӑՓ���Թ�
> �_�����^��̫��� QQ Ⱥ�ļ��g�C����Ҫ���N�㣿߀�У��Л]���`�� QQ ��ʹ�×l
> ��������Ȼ��Ԓ����һֱ���X�� WHATWG IRC �l���ļo�[4]߀�U���õġ���
>
> [4] http://krijnhoetmer.nl/irc-logs/
>
>
> ����
>
> Kenny
>
>

Received on Saturday, 14 April 2012 16:53:02 UTC