前端基础——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-------------------------------
○延伸两句○深拷贝:修改新变量的值不会影响原有变量的值。默认情况下基本数据类型都是深拷贝。浅拷贝:修改新变量的值会影响原有的变量的值。默认情况下引⽤类型都是浅拷贝。