JS判断数据类型、null与undefined的区别?

JavaScript有三种方法,可以确定一个值到底是什么类型。

typeof运算符
instanceof运算符
Object.prototype.toString方法

1、typeof运算符

谈到判断数据类型,首先应该回忆到JS的两种数据类型:原始类型、引用类型。那么ECMAScript 提供了 typeof 运算符判断一个值是否表示一种原始类型*如果它是原始类型,还可以判断它表示哪种原始类型。

对变量或值调用 typeof 运算符将返回下列值之一:

typeof undefined
"undefined"
typeof null
"object"
typeof 1
"number"
typeof '1'
"string"
typeof {}
"object"
typeof [1,2,3]
"object"
typeof (function(){})
"function"

2、instanceof运算符
3、Object.prototype.toString方法

null与undefined的区别?
null == undefined
null !== undefined
null的类型是object,这是由于历史原因造成的。1995年JavaScript语言的第一版,所有值都设计成32位,其中最低的3位用来表述数据类型,object对应的值是000。当时,只设计了五种数据类型(对象、整数、浮点数、字符串和布尔值),完全没考虑null,只把它当作object的一种特殊值,32位全部为0。这是typeof null返回object的根本原因。
为了兼容以前的代码,后来就没法修改了。这并不是说null就属于对象,本质上null是一个类似于undefined的特殊值。
那么他们的区别是?

null是一个表示”无”的对象,转为数值时为0;undefined是一个表示”无”的原始值,转为数值时为NaN。

null 参与数值运算时其值会自动转换为 0 ,因此,下列表达式计算后会得到正确的数值:
表达式:123 + null    结果值:123

undefined出现的场景:

  1. 变量声明了,但没有赋值 var i; i // undefined

  2. 调用函数时,应该提供的参数没有提供,该参数等于undefined function f(x) { return x; } f()
    // undefined

  3. 对象没有赋值的属性 var o = new Object(); o.p // undefined

  4. 函数没有返回值时,默认返回undefined function f() {} f() // undefined

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值