前端基础——js数据类型及判断方法

  • 格式:pdf
  • 大小:138.49 KB
  • 文档页数:3

前端基础——js数据类型及判断⽅法

⼀、数据类型

我们通常熟知的数据类型有六种,包括5种基本数据类型(Number, String, Boolean, Undefined, Null)和⼀种引⽤数据类型(Object)。ES6⼜新增了⼀个基本数据类型Symbol,所以现在应该是七种数据类型。

注:有些地⽅会把引⽤类型分为对象(Object)、数组(Array)、函数(Function)三种,还有博客中提到了chrome 67中的新功能BigInt类型,我这⾥暂时不算进去。

1、Number

数字类型,包括整数和浮点数。

有⼀个特殊的值NaN,即⾮数值。js 规定NaN不等于NaN,可以⽤ isNaN() 来检测是否是⾮数值型。

2、String

字符串类型,单双引号都⾏。

3、Boolean

布尔类型,只有两个值,true和false。

4、Undefined

声明了变量,但是没有初始化,则这个变量的类型就是undefined,且其默认初始化值为undefined。

5、Null

null类型的默认值是null,从逻辑⾓度讲,是表⽰⼀个空对象指针。

注:区分undefined和null——当⼀个变量声明后,未初始化,则该值为undefined;如果这个值是为了保存对象,则修改默认初始化值为null。 所以当检测其类型时,会显⽰类型为object。

6、Object(Data、Function、Array等)

该类型实例化的对象,是⼀组数据和功能(函数)的集合。

实例化对象的过程有两种,⼀种是通过new操作符,⼀种是通过对象字⾯量表⽰法。

Array()、Date()、function()类型,都是从object继承的。

7、Symbol(ES6 新增)

Symbol 类型本质上是⼀种唯⼀标识符,可⽤作对象的唯⼀属性名。

唯⼀性

Symbol 类型的对象永远不相等,即使是⽤同⼀个变量⽣成的值也不相等。

隐藏性

for···in,object.keys() 不能访问,可以⽤专门针对Symbol的⽅法来获取。

Symbol 类型的⼀些应⽤和参考

⼆、判断⽅法

1、typeof

typeof可以区分⼀部分数据类型,结果如下:

typeof 123 //Number

typeof 'abc' //String

typeof true //Boolean

typeof undefined //Undefined

typeof Symbol() //Symbol

typeof null //Object

typeof { } //Object

typeof [ ] //Object

typeof console.log() //Function

2、判断null、object和array

从上⾯的结果可以看出,⽤typeof检测 null、数组、对象的结果都是Object,所以需要⽤其他⽅法区分他们的类型。

判断null

可以⽤===null来判断。

判断object和array

① isArray

Array.isArray([]) //trueArray.isArray({}) //false

② instanceof

[] instanceof Array //true{} instanceof Array //false

③ constructor

{}.constructor //返回object[].constructor //返回Array

④ Object.prototype.toString.call

Object.prototype.toString.call([]) //["object Array"]Object.prototype.toString.call({}) //["object Object"]

END-------------------------------

○延伸两句○深拷贝:修改新变量的值不会影响原有变量的值。默认情况下基本数据类型都是深拷贝。浅拷贝:修改新变量的值会影响原有的变量的值。默认情况下引⽤类型都是浅拷贝。