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

2020-02-29  本文已影响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似乎很有道理了哈

最后 🙌

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

上一篇下一篇

猜你喜欢

热点阅读