Getting a CastError NaN for a Number

痞子三分冷 提交于 2021-02-10 12:27:09

问题


I get this error

{ [CastError: Cast to Number failed for value "NaN" at path "area"]
        message: 'Cast to Number failed for value "NaN" at path "area"',
        name: 'CastError',
        kind: 'Number',
        value: NaN,
        path: 'area' } } }

for this code

MySchema.methods = {
  updateArea: function (oldArea, newArea) {
    var self = this;
    self.area = self.area - oldArea + newArea;
    return self.save(function (err) {
      if (err) {
        console.log(err);
        return err;
      }
    });
  }
};

However, when I logged the typeof self.area, it gives me number. I was testing and realized that by casting it to a Number, it works sometimes. For example, adding this worked and gave no error:

var test = Number(self.area);
self.area = test;

so it looked like

MySchema.methods = {
  updateArea: function (oldArea, newArea) {
    var self = this;
    self.area = self.area - oldArea + newArea;
    var test = Number(self.area);
    self.area = test;
    return self.save(function (err) {
      if (err) {
        console.log(err);
        return err;
      }
    });
  }
};

However, even simply casting it as a Number earlier gives an error, using a line like

self.area = Number(self.area - oldArea + newArea);

so that it overall looks like

MySchema.methods = {
  updateArea: function (oldArea, newArea) {
    var self = this;
    self.area = Number(self.area - oldArea + newArea);
    return self.save(function (err) {
      if (err) {
        console.log(err);
        return err;
      }
    });
  }
};

still gives the error.

Anyone know what's up?


回答1:


One of oldArea or newArea must not be a number.

If you add a number to something like undefined the result is NaN.

var n = 5;
n = n + undefined;
// n is now NaN

Interestingly, typeof NaN is 'number' which can be confusing as its whole purpose is to indicate that it's not a valid number. :-)



来源:https://stackoverflow.com/questions/30966164/getting-a-casterror-nan-for-a-number

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!