Files
NapCatQQ/.pnpm-store/v3/files/f6/120eef8fc6664174a69fe28350e419f016fed303198fd7e202cfa282ef90df71020b8fd8b3481320c8468ef23f0c6befe4cfdba39cb2829de3d926dd977554
TanTan e311ca3275
Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

39 lines
1.1 KiB
Plaintext

'use strict';
var isObject = require('es-object-atoms/isObject');
var ToNumber = require('./ToNumber');
var ToPrimitive = require('./ToPrimitive');
var isSameType = require('../helpers/isSameType');
// https://262.ecma-international.org/5.1/#sec-11.9.3
module.exports = function AbstractEqualityComparison(x, y) {
if (isSameType(x, y)) {
return x === y; // ES6+ specified this shortcut anyways.
}
if (x == null && y == null) {
return true;
}
if (typeof x === 'number' && typeof y === 'string') {
return AbstractEqualityComparison(x, ToNumber(y));
}
if (typeof x === 'string' && typeof y === 'number') {
return AbstractEqualityComparison(ToNumber(x), y);
}
if (typeof x === 'boolean') {
return AbstractEqualityComparison(ToNumber(x), y);
}
if (typeof y === 'boolean') {
return AbstractEqualityComparison(x, ToNumber(y));
}
if ((typeof x === 'string' || typeof x === 'number') && isObject(y)) {
return AbstractEqualityComparison(x, ToPrimitive(y));
}
if (isObject(x) && (typeof y === 'string' || typeof y === 'number')) {
return AbstractEqualityComparison(ToPrimitive(x), y);
}
return false;
};