isnan和typeof的区别
时间: 2024-04-28 13:23:27 浏览: 106
isnan() 是 JavaScript 中的一个全局函数,用于检查一个值是否为 NaN(不是数字)。如果是,则返回 true,否则返回 false。
typeof 是 JavaScript 中的一个操作符,用于获取一个值的数据类型。它返回一个字符串,表示该值的数据类型,例如 "string"、"number"、"boolean"、"function" 等。
因此,isNaN() 和 typeof 是两个不同的概念,没有直接的联系。isNaN() 用于判断一个值是否为 NaN,而 typeof 用于获取一个值的数据类型。
相关问题
isNan
`isNaN` 是 JavaScript 内置函数之一,用于判断一个值是否为 `NaN`(Not a Number)。`NaN` 是一个特殊的数值类型,表示非数字的值。如果传入的参数是 `NaN`,则返回 `true`,否则返回 `false`。需要注意的是,`isNaN` 函数会先尝试把参数转化为数值类型,如果无法转化,则返回 `true`。
例如:
```
isNaN(NaN); // true
isNaN("hello"); // true
isNaN("123"); // false
isNaN(undefined); // true
isNaN(null); // false
```
需要注意的是,在 ES6 之前,`isNaN` 函数的实现是有问题的。因为它会先尝试将参数转化为数值类型,如果参数是字符串类型,而且字符串中有非数字字符,那么它会把字符串转化为 `NaN`,导致判断结果错误。因此,在 ES6 之前,我们通常使用下面的方式来判断一个值是否为 `NaN`:
```
function myIsNaN(value) {
return typeof value === "number" && isNaN(value);
}
```
this.sampleDate[0].gross= res.count3; this.sampleDate[0].process = res.count1+res.count2; let result1:Number = parseFloat(((this.sampleDate[0].process / this.sampleDate[0].gross).toFixed(2))); if (typeof result1 === 'number' && !isNaN(result1)) { this.sampleDate[0].percentage = result1 * 100; } else { this.sampleDate[0].percentage = 0; } this.sampleDate[1].gross = 12; this.sampleDate[1].process = 4; let result2:Number = parseFloat(((this.sampleDate[1].process / this.sampleDate[1].gross).toFixed(2))); if (typeof result2 === 'number' && !isNaN(result2)) { this.sampleDate[1].percentage = result2 * 100; } else { this.sampleDate[1].percentage = 0; }
可以简化为以下代码:
```
const updateSampleDate = (sampleDate: any[], gross: number, process: number, index: number): void => {
sampleDate[index].gross = gross;
sampleDate[index].process = process;
const percentage = parseFloat(((process / gross) * 100).toFixed(2));
sampleDate[index].percentage = isNaN(percentage) ? 0 : percentage;
};
updateSampleDate(this.sampleDate, res.count3, res.count1 + res.count2, 0);
updateSampleDate(this.sampleDate, 12, 4, 1);
```
这里使用了一个 `updateSampleDate` 函数来更新 `sampleDate` 数组中的数据。这个函数接收三个参数:`sampleDate` 数组、总量 `gross`、处理量 `process` 和索引 `index`。在函数内部,先通过传入的参数更新 `sampleDate` 数组中对应索引的 `gross` 和 `process` 值,然后计算出百分比并更新到 `percentage` 属性中。如果计算结果是 `NaN`,则将 `percentage` 属性设置为 0。最后,通过调用 `updateSampleDate` 函数更新两个数据项即可。
阅读全文