source: frontend/node_modules/es-abstract/2016/AbstractEqualityComparison.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 1.2 KB
RevLine 
[9af201e]1'use strict';
2
3var ToNumber = require('./ToNumber');
4var ToPrimitive = require('./ToPrimitive');
5
6var isSameType = require('../helpers/isSameType');
7
8var isObject = require('es-object-atoms/isObject');
9
10// https://262.ecma-international.org/6.0/#sec-abstract-equality-comparison
11
12module.exports = function AbstractEqualityComparison(x, y) {
13 if (isSameType(x, y)) {
14 return x === y; // ES6+ specified this shortcut anyways.
15 }
16 if (x == null && y == null) {
17 return true;
18 }
19 if (typeof x === 'number' && typeof y === 'string') {
20 return AbstractEqualityComparison(x, ToNumber(y));
21 }
22 if (typeof x === 'string' && typeof y === 'number') {
23 return AbstractEqualityComparison(ToNumber(x), y);
24 }
25 if (typeof x === 'boolean') {
26 return AbstractEqualityComparison(ToNumber(x), y);
27 }
28 if (typeof y === 'boolean') {
29 return AbstractEqualityComparison(x, ToNumber(y));
30 }
31 if ((typeof x === 'string' || typeof x === 'number' || typeof x === 'symbol') && isObject(y)) {
32 return AbstractEqualityComparison(x, ToPrimitive(y));
33 }
34 if (isObject(x) && (typeof y === 'string' || typeof y === 'number' || typeof y === 'symbol')) {
35 return AbstractEqualityComparison(ToPrimitive(x), y);
36 }
37 return false;
38};
Note: See TracBrowser for help on using the repository browser.