# 判断对象相等

# +0 与 -0

+0 === -0;  // true
(-0).toString();  // '0';
(+0).toString();  // '0'

-0 < +0;  // false
+0 > -0;  // false

1 / +0;  // Infinity
1 / -0;  // -Infinity

1 / +0 === 1 / -0;  // false;
IEEE_754 浮点数可以最高位是符号位,0正,1负。  零这个边界值。

Math.round(-0.1);  // -0;

# 实现 -0 和 0 的区分

function eq(a, b) {
    if (a === b) return a !== 0 || 1 / a === 1 / b;
}

# 实现 NaN

function eq(a, b) {
    if (a !== a) return b !== b;
}

# eq

function eq(a, b) {
    if (a === b) return a !== 0 || 1 / a === 1 /b;

    if (a == null || b == null) return false;

    if (a !== a) return b !== b;

    var type = typeof a;
    if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;

    return deepEq(a, b);
}