美文网首页
JS的undefined、null、NaN你搞懂了吗?

JS的undefined、null、NaN你搞懂了吗?

作者: 羞羞的王大锤 | 来源:发表于2020-02-29 23:52 被阅读0次

    我们日常js开发中,你是不是经常被undefined、null、NaN搞得晕头转向,不用担心,读完下面的内容,我相信你会清清楚楚

    undefined

    当我们在任何不确定的情况下,使用未初始化的变量、访问不存在或是已删除的属性、使用不存在的数组元素时,你就会遇到它——undefined。你可以认为:对于任何没有值的东西,都会将undefined赋给它
    这样做能带给我们什么好处呢?
    从未赋值的变量来说:

    var x;
    console.log(x)
    // 结果为undefined
    if(x == undefined){
        //x未定义!
    }
    //可以检查变量是否未定义
    

    对象的属性来说:

    var customer = {
        name:'chuichui'
    };
    console.log(customer.phoneNumber)
    // 结果为undefined
    if(customer.phoneNumber == undefined){
        //获取客户电话
    }
    // 可检查属性是否未定义
    

    undefined的类型是什么呢?

    console.log(typeof undefined)
    // 结果显示undefined
    

    其实undefined的类型就是undefined,可能是js觉得它不是对象,不是数字、字符串或布尔值,也不是任何明确的东西,那么就叫什么呢??干脆就叫它未定义吧。。。

    null

    null会在什么时候出现呢?
    比如我们想根据id获取一个dom节点时会执行下面的方法

    var header = document.getElementById("header");
    // 当没有header这个id是,会返回什么呢?
    console.log(header)
    // 结果为null
    

    为什么是null呢?这里null代表我们找的对象不存在!

    null的类型有什么呢?

    console.log(typeof null)
    //结果为object
    

    这里不难理解,null本来想获取一个对象,但是这个对象无法创建或者是不存在,只好返回null,但实际上它代表的是对象

    NaN

    NaN 通常被称为非数字Not a Number,用来表示它无法表示的数字
    比如说0/0,在数学中,没有明确的而答案,在JS中当然也不知道它的结果,所以结果是NaN

    var a = 0/0;
    console.log(a);
    //结果为NaN
    

    比如说一个字符串和数字相乘

    var b = 'shit' * 1000
    // 不知道什么鬼,一千次shit袭击?结果为NaN
    

    在JS中无法表示虚数,所以当结果为虚数时,结果为NaN

    console.log(Math.sqrt(-1))
    // 结果为NaN
    

    NaN的类型是什么呢?

    console.log(typeof NaN)
    // 结果显示为Number
    

    what?一个不是数字的东西,类型怎么可能是数字呢?其实都是NaN这个名字太糟糕,与其称之为“不是数字”,还不如叫成“无法表达的数字”,如果你这么想,就可认为NaN是一个数字,只是无法表示而已

    NaN == NaN 吗?

    答案是不相等!!这可能是JS中最怪异的值了,它也是JS中唯一一个与自己不相等的值了

    console.log(NaN == NaN)
    // 结果为false
    

    其实细细拼一拼也不难理解,比如说sqrt(-1)和sqrt(-2)值都为NaN,很明显他们是不相同的,这样NaN != NaN似乎很有道理了哈

    最后 🙌

    好啦,以上就是我本次分享的全部内容啦,如果你觉得我的文章对你有一丢丢帮助,那么请不要吝啬你的赞👍哦,阿门~

    相关文章

      网友评论

          本文标题:JS的undefined、null、NaN你搞懂了吗?

          本文链接:https://www.haomeiwen.com/subject/eeowhhtx.html