相等的数字不相等 - javascript

时间:2016-01-13 09:15:33

标签: javascript angularjs numbers equals

我面临一个奇怪的问题。我有两个数字(均为1)并且它们不相等。

> step.id
> Number {[[PrimitiveValue]]: 1}
> 
> $scope.process.currentStep
> Number {[[PrimitiveValue]]: 1}
> 
> step.id === $scope.process.currentStep
> false

2 个答案:

答案 0 :(得分:0)

虽然您的问题确实缺乏细节,但您的问题似乎是由于使用了===。这是一种严格的检查机制,这意味着它不执行类型/对象转换。因此,如果两个实体不是同一个对象,则它们不相等。通过这种逻辑,从控制台。

"1"==1
true
"1"===1
false

答案 1 :(得分:0)

解决方案对我来说似乎有点脏,但是现在它可以工作,并且它可以很容易地修复它。

我为Number-Type写了一个扩展来比较两个数字。

Object.defineProperty(Number.prototype, 'Equals', {
   value: function (compareTo) {
      'use strict';

       var number = this;
       if (typeof (number) === 'number' || typeof (compareTo) === 'number') {
          return number === compareTo;
       }

       return number.toString() === compareTo.toString();
   },
   writable: true,
   configurable: true,
   enumerable: false
});