baseIsEqual.js 1.1 KB

12345678910111213141516171819202122232425262728
  1. var baseIsEqualDeep = require('./baseIsEqualDeep'),
  2. isObject = require('../lang/isObject'),
  3. isObjectLike = require('./isObjectLike');
  4. /**
  5. * The base implementation of `_.isEqual` without support for `this` binding
  6. * `customizer` functions.
  7. *
  8. * @private
  9. * @param {*} value The value to compare.
  10. * @param {*} other The other value to compare.
  11. * @param {Function} [customizer] The function to customize comparing values.
  12. * @param {boolean} [isLoose] Specify performing partial comparisons.
  13. * @param {Array} [stackA] Tracks traversed `value` objects.
  14. * @param {Array} [stackB] Tracks traversed `other` objects.
  15. * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
  16. */
  17. function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {
  18. if (value === other) {
  19. return true;
  20. }
  21. if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {
  22. return value !== value && other !== other;
  23. }
  24. return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);
  25. }
  26. module.exports = baseIsEqual;