javascript数据类型

 

javascript数据类型基本数据类型(6种)

Number、Boolean、String、Null、Undefined、Symbol

引用类型(3种)

Function、Object、Array

基本数据类型的特点:

1)值不可变

2)比较是值得比较

3)存放在栈区

引用类型的特点:

1)值是可变的,拥有属性和方法

2)比较是引用的比较

3)同时存放在栈区和堆区

两种类型的比较:

存放位置:基本类型存放在栈区,引用类型存放在堆区

访问方式:基本类型按照值访问,引用类型按照引用访问

检测数据类型的方法:(5种)

1、严格运算符 ===

这种方式只能用来检测null和undefined

javascript数据类型

2、typeof 

typeof 不能用来检测null和数组

javascript数据类型

typeof null 和typeof ["a"] 返回的值都是object

3、Object.prototype.toString.call()

这个是比较常用的检测方式,也是比较准确的数据检测的方法,这种方法可以检测出所有的类型。

javascript数据类型

注意:正常情况下,我们的每种数据类型都有toString()方法,都是将调用的主题单独的转换成字符串的形式:如下图

javascript数据类型

对象的toString()方法返回的是"[object Object]" 这个东西,第一个值是固定的,第二个值是你调用的主体的构造函数。

4、instanceof 方法 (判断一个值是不是对应的构造函数的实例)

javascript数据类型

缺点:

1、不能用字面量的东西来判断,只能通过标准的构造函数创建实例的方式来创建

2、不能用来判断null和undefined的类型(因为Null 和Undefined类被浏览器给屏蔽了)

3、这个的判断是不准确的。因为只要在原型链上的都会是true,因为他会沿着原型链向上查找,只要在原型链上找到一个构造函数==需要判断的构造函数,就会返回true

5、constructor

constructor类似于instanceof 

javascript数据类型

缺点:

1、不能区分null 和undefined

2、万一进行了prototype的更改,这个值就会出现差错

例如继承

javascript数据类型