promise.js
function SameValue ( x, y ) {
    if ( typeof x !== typeof y ) {
      return false;
    }
    if ( Type(x) === 'undefined' ) {
      return true;
    }
    if ( Type(x) === 'number' ) {
      if ( x !== x && y !== y ) {
        return true;
      }
      if ( x === 0 ) {
        return 1 / x === 1 / y;
      }
    }
    return x === y;
  }
function SameValue ( x, y ) {
    if ( typeof x !== typeof y ) {
      return false;
    }
    if ( Type(x) === 'undefined' ) {
      return true;
    }
    if ( Type(x) === 'number' ) {
      if ( x !== x && y !== y ) {
        return true;
      }
      if ( x === 0 ) {
        return 1 / x === 1 / y;
      }
    }
    return x === y;
  }
7.2.3 SameValue( x, y )