Js 数据类型及类型判断
想要修建属于自己的一座美丽庄园,一砖一瓦,一草一木都不能马虎。同样学习也是如此,基础学扎实了,才能在前端路上走的更远。这次我们了解下 js 的数据类型。
Js 数据类型:
主要分为 值类型(基本类型) 和 引用数据类型(对象类型),基本数据类型的值是按值访问的,而引用类型的值是按引用访问的。通俗来说,就像一个入住门牌号001房间的一个人,值访问是你直接与人进行交流,引用访问是你知道有一个门牌号是001的房间。
基本数据类型:
Number 数字
String 字符串
Boolean 布尔值
Null 空
Undefined 未定义
Symbol // Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。
引用数据类型:
Object 对象
Array 数组
Function 函数
// 还有两个特殊的对象:
RegExp 正则
Date 日期
数据类型的判断方式:
这里就只介绍一个常见 typeof 方式以及一个我推荐的 toString 方式。
方式一:typeof
var reslut
reslut = 24
console.log(typeof reslut) // number
reslut = '33'
console.log(typeof reslut) // string
reslut = true
console.log(typeof reslut) // boolean
reslut = null
console.log(typeof reslut) // object
reslut = undefined
console.log(typeof reslut) // undefined
reslut = {}
console.log(typeof reslut) // object
reslut = new Date()
console.log(typeof reslut) // object
reslut = new RegExp()
console.log(typeof reslut) // object
reslut = []
console.log(typeof reslut) // object
reslut = function(){}
console.log(typeof reslut) // function
reslut = Symbol()
console.log(typeof reslut) // symbol
这里我们会发现,通过 typeof 操作符返回的结果有些不尽人意,只返回了其处于原型链最顶端的 object 类型,没有返回我们想要的对应具体类型,下面我们使用另一种方式。
方式二:toString(推荐)
toString是 Object 的原型方法,默认返回当前对象的 [object Xxx],Xxx是对应具体的数据类型(首字母大写)。这里由于toString是Object 的原型方法,所以我进行了下小改动。
// 定义了个函数进行处理,并返回 Xxx
function outputDataType(data){
let dataTypeStr = Object.prototype.toString.call(data)
// toString返回的是[object xxx],进行字符串截取返回对应数据类型
dataTypeStr = dataTypeStr.match(/\[object (\S*)\]/)[1]
return dataTypeStr
}
var reslut
reslut = 24
outputDataType(reslut) // Number
reslut = '33'
outputDataType(reslut) // String
reslut = true
outputDataType(reslut) // Boolean
reslut = null
outputDataType(reslut) // Null
reslut = undefined
outputDataType(reslut) // Undefined
reslut = {}
outputDataType(reslut) // Object
reslut = new Date()
outputDataType(reslut) // Date
reslut = new RegExp()
outputDataType(reslut) // RegExp
reslut = []
outputDataType(reslut) // Array
reslut = function(){}
outputDataType(reslut) // Function
reslut = Symbol()
outputDataType(reslut) // Symbol
自此,一些针对数据类型的处理我们就能友好的判断了。