如何检查并修复NaN值?实现计算结果为NaN时返回0的方法
解决NaN问题的检查与修复方案
首先明确findAvareageOfWpm出现NaN的常见原因:
wordsPerMinute或numberTrains不是有效数字(比如是字符串、undefined、null)numberTrains和wordsPerMinute同时为0(0/0会得到NaN)
方法一:计算后精准判断替换
用Number.isNaN()直接检查计算结果,是NaN就替换为0,代码示例:
let findAvareageOfWpm = Math.floor(wordsPerMinute / numberTrains); // 精准判断是否为NaN,是则赋值为0 if (Number.isNaN(findAvareageOfWpm)) { findAvareageOfWpm = 0; } // 输出到屏幕 console.log(findAvareageOfWpm);
注意:别用全局isNaN(),它会把非数字类型先转成数字(比如isNaN('abc')返回true),Number.isNaN()只会判断真正的NaN值,更精准。
方法二:计算前提前校验变量有效性
提前确保两个变量是合法数字,从根源避免NaN出现:
// 把wordsPerMinute转为有效数字,无效则设为0 const validWpm = typeof wordsPerMinute === 'number' && !Number.isNaN(wordsPerMinute) ? wordsPerMinute : 0; // 把numberTrains转为有效数字,无效或为0则设为1(避免除以0) const validTrains = typeof numberTrains === 'number' && !Number.isNaN(numberTrains) && numberTrains !== 0 ? numberTrains : 1; let findAvareageOfWpm = Math.floor(validWpm / validTrains); console.log(findAvareageOfWpm);
方法三:用空值合并运算符快速处理
利用??运算符实现简洁替换,仅当值为null/undefined/NaN时替换为0:
let findAvareageOfWpm = Math.floor(wordsPerMinute / numberTrains); // 空值合并,仅替换NaN、null、undefined findAvareageOfWpm = findAvareageOfWpm ?? 0; console.log(findAvareageOfWpm);
内容的提问来源于stack exchange,提问作者Proger228
相关产品推荐
相关产品推荐

