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

来源:互联网 发布:java socket 怎么使用 编辑:程序博客网 时间:2024/06/04 19:19

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

阅读全文
0 0
原创粉丝点击