Home Reference Source

ts_temp/is/strictEqual.js

/**
 * Returns `true` if its arguments are equivalent is same value zero terms, `false` otherwise.
 *
 * @param {*} test1
 * @param {*} test2
 * @return {Boolean}
 * @example
 *
 *      isStrictEqual(1, 1); //=> true
 *      isStrictEqual(1, '1'); //=> false
 *      isStrictEqual({}, {}); //=> false
 *      isStrictEqual(NaN, NaN); //=> true
 *      isStrictEqual(-0, 0); //=> true
 */
export default (test1, test2) => {
    // SameValue algorithm
    if (test1 === test2) {
        // Steps 6.b-6.e: +0 != -0
        return test1 !== 0 || 1 / test1 === 1 / test2;
    }
    else {
        // Step 6.a: NaN == NaN
        return test1 !== test1 && test2 !== test2;
    }
};