JavaScript中的特殊值

·  阅读 32

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情

undefined

出现的情况

  1. 定义了变量, 但是没有对其进行初始化, 那么这个变量的值就是undefined
  2. 定义了对象, 但是去访问这个对象中没有或者已经删除的属性时, 这时会返回undefined
  3. 定义了数组, 但是这是一个稀疏数组, 并且去访问这个数组中没有去赋值的位置时, 这时返回undefined
  4. 当一个函数, 没有return语句时, 则返回undefined

作用

当我们需要用到变量, 对象中的属性, 数组的元素去进行一些计算的时候, 可以用这个特性来进行判断, 进行一些特殊处理

请说出下面三个log语句的输出

        // 访问未赋值的变量
        let b;
        console.log(b);

        // 访问数组中未赋值的数据
        let arr = {}
        arr[3] = 3;
        console.log(arr[1]);

        // 访问对象中未定义的属性
        let obj = {}
        console.log(obj.name);
复制代码

null

undefined表示该变量还没有初始化, 还没有赋值

null表示没有

null出现的情况

  1. 无法创建这个对象或者该对象不再使用手动置为null
  2. 没有找到这个对象 例如getElementById这个方法

null的作用

跟undefined差不多的使用方法, 例如我们在使用getElementById方法时, 可以判断返回值是否为null, 来判断这个元素是否存在

        // 不再使用时, 置为null
        let obj = {name:'shaosiming'}
        obj = null;
        console.log(obj);

        // 查找一个不存在的元素
        console.log(document.getElementById('title'));
复制代码

NaN

NaN, not a number, 在js中当一个表达式的结果无法表达时使用该值

它和任何值都不相等, 包括它自己

NaN出现的情况

  1. 当数学运算中出现错误时, 如0当了除数, 对一个负数开方等
  2. 当一个不是数值型的数据进行运算时
        console.log(0/0);

        // string number
        console.log('shaosiming'*2);

        // 无法计算的公式
        console.log(Math.sqrt(-9));

        let res = NaN == NaN;
        console.log(res); // false

        console.log(isNaN(NaN)); // true

        let res2 = isNaN('a'*2); // true
        console.log(res2);
复制代码

Infinity

当一个浮点数超过计算机表示的范围时, 在js中会被表示为Infinity

==的隐式转换

  1. 当其它类型与数值进行==运算时, 将其它类型转换为数值再进行运算
  2. 当布尔和其它类型进行==运算时, 将其都转换为数值再进行运算
  3. null和undefin进行==运算时, 返回true
        console.log('3' == 3);
        console.log(true == 1);
        console.log(false == 0);

        // 隐式转换为数值二
        console.log(true == '1');
        console.log(false == '0');

        // null和undefin
        console.log(null == undefined); // true
复制代码

这些特殊的假值

undefined, null, NaN, Infin, 0, ''这些转换为字符串时, 都是false

        console.log(Boolean(undefined));
        console.log(Boolean(null == false));
        console.log(Boolean(NaN));
        console.log(Boolean(Infinity));
        console.log(Boolean(0));
        console.log(Boolean(''));
复制代码

typeof

注意: 根据ES标准, null应该就是Null类型, 但是使用typeof来查看的时候, 返回object

        console.log(typeof undefined); // undefined
        console.log(typeof null); // object
        console.log(typeof NaN); // number
        console.log(typeof Infinity); // number
复制代码
分类:
前端
收藏成功!
已添加到「」, 点击更改