出现NaN的情况整理

一、什么是NaN
NaN(NOT A NUMBER)指不合法的数,运用 NaN 进行运算,最后得出也是 NaN,可以使用 isNaN()来判断是否某个值是否为数
// 判断是否为 NaN console.log(isNaN("apple")); // true,是非数字就返回 true console.log(isNaN(12)); // false
// 运用typeof NaN 返回是 number console.log(typeof NaN); // number
二、情况整理
console.log(12 + "apple"); // 字符串级联 12apple console.log("12" + "apple"); // 字符串级联 12apple console.log("apple" + 12); // apple12<details> console.log("apple" + "12"); // apple12 console.log(12 - "apple"); // 12 - "apple" = NaN console.log("12" - "apple"); // "12" - "apple" = NaN console.log(12 * "apple"); // 12 * "apple" = NaN console.log("12" * "apple"); // "12" * "apple" = NaN console.log(12 / "apple"); // 12 / "apple" = NaN // "12" 转为 number进行除法运算,但是 "apple" 非数字字符串,最后得出 NaN console.log("12" / "apple"); //"12" / "apple" = NaN console.log(12 % "apple"); //NaN console.log("12" % "apple"); //NaN
注意 true/false 布尔类型的转换:
1.true 会转换为 1,false 会转换为 0
2.不是加法运算,后面的数是数字字符串,会转为数字 number 类型进行运算
3.是加法运算,后面的数无论是不是数字,都直接是级联
4.true —> “true”,此时就是 string 类型(非数字类型的字符串)而不是 boolean,运算会出 NaN
console.log(typeof true); // boolean console.log(true + "1"); // true1 console.log("1" + true); //1true console.log("true" + "1"); //true1 console.log("1" + "true"); //1true console.log(true - "1"); //0 console.log("1" - true); //0 console.log(true * "1"); //1 console.log("1" * true); //1 console.log(true / "1"); // 1 console.log("true" / "1"); // NaN console.log(true % "1"); //0 console.log("1" % true); //0
三、NaN == NaN 的结果是什么?为什么?
JavaScript的规定, NaN表示的是非数字, 但是这个非数字也是不同的
因此 NaN 永远不等于NaN,所以NaN == NaN 的结果为false
四、防止 NaN 的常见技巧
默认值:在进行数值计算时,确保如果值是 NaN,可以通过 || 或三元运算符等方式赋予默认值,避免程序崩溃
类型转换:确保输入类型正确,尤其是在处理用户输入时,使用 parseFloat、parseInt 等方法进行类型转换。
验证:在程序中添加必要的校验和错误处理,避免无效数据引发 NaN。

posted @ 2025-04-11 23:52  k954  阅读(26)  评论(0)    收藏  举报