原生JS -- 三大特殊数据类型

    技术2026-04-10  8

    1、NaN

    概念:非法的数值运算得到的结果特殊点: 是一个数值型的数据,但不是一个数字NaN不等于任何值(包括它本身),和任何数据都不相等 console.log(typeof NaN); // number console.log(NaN == NaN); // false

    【注】计算机认为每一个NaN都是非法运算的结果,每一个NaN的来源都不一样,所以不相等。

    检测方法:isNaN() 隐式类型转换,将数据转成数值,严格转换,能识别小数点 console.log(isNaN(NaN)); // true console.log(isNaN('hello')); //true, 'hello'不能转成数值,因此会得到NaN console.log(isNaN('123')); //false, '123'能转成数值,因此不是NaN console.log(isNaN('12a3'));//true, 严格转换,出现字母就不能转成数值,因此是NaN console.log(isNaN('12.3'));//false, 能识别小数点,因此能转成数值,因此不是NaN

    2、undefined

    概念:未赋值特殊点: undefined在null关系运算符两边隐式转换后,得到了一致的数据:false 或 0undefined被Number( )转成NaN console.log(undefined == null); // true, undefined和null被隐式转换成一致的数据 console.log(Number(undefined)); // NaN 检测方法:typeof var b = undefined ; console.log(typeof b === "undefined"); // 注意要用 ===

    3、null

    概念:空,null的数据类型是对象,但不是空对象,就是空特殊点: undefined在null关系运算符两边隐式转换后,得到了一致的数据:false 或 0null被number转成0 console.log(undefined == null); // true console.log(Number(null)); // 0 检测方法:检测null需要配合typeof和关系运算符进行判断,需要满足以下两个条件 首先判断该数据是否是对象类型:typeof val === "object"且,判断该数据是否是null类型:val == null var o = null; if(typeof o === "object" && o == null){ console.log("o是null"); }

    最后给大家拓展一下:如何区分真正的对象和null

    真正的对象的标志:任何两个对象都不相等,只要相等了,那么就是一个但是null是可以等于null的

    也就是说,null和对象是不相等的

    console.log(null == {}); // false
    Processed: 0.009, SQL: 9