前言
一. js的数据类型有哪些
javaScript是一门弱语言,在js中,数据类型有六种,其中包含五种基本数据类型(值类型)和一种对象类型(复杂类型)。基本数据类型把数据名和值直接存储在栈当中,而复杂数据类型在栈中存储数据名和一个堆的地址,在堆中存储对象的属性及值。访问时先从栈获取地址(即栈中存放的是对象的引用),再到堆中拿到相应的值。
基本数据类型。
- number:1,2,3。
- string:'jsjssjj','苹果'
- boolean:true和false
- null:null
- undefined:undefined
对象类型(object)
- function(函数)
- Array(数组)
- object(对象)
- date(时间日期)
二. js的数据类型的判断方法
1.typeof
判断数据类型最常用的方法就说typeof了,它可以用来判断大多数的数据类型
var a;
console.log(typeof a)//undefined
var a = 1;
console.log(typeof a)//number
var a = '1';
console.log(typeof a)//string
var a = true||false;
console.log(a)//boolean
var a = NaN;
console.log(typeof a)//number
var a = [1,2,3];
console.log(typeof a)//object
var a = new object();
console.log(typeof a)//object
var a = null;
console.log(null)//object
大家会发现,虽然typeof能判断大多数数据的类型,但是无法区分null与object,也无法区分object和array,所以要区分它们,我们要另辟蹊径。
2.Object.prototype.toString
Object.prototype.toString也是一种基于原型链的判断数据类型的方法,因为js中每一个对象(空对象除外)都会继承自Object,下面是例子:
function isString (o) { //是否字符串
return Object.prototype.toString.call(o).slice(8, -1) === 'String'
}
function isNumber (o) { //是否数字
return Object.prototype.toString.call(o).slice(8, -1) === 'Number'
}
function isObj (o) { //是否对象
return Object.prototype.toString.call(o).slice(8, -1) === 'Object'
}
function isArray (o) { //是否数组
return Object.prototype.toString.call(o).slice(8, -1) === 'Array'
}
function isDate (o) { //是否时间
return Object.prototype.toString.call(o).slice(8, -1) === 'Date'
}
function isBoolean (o) { //是否boolean
return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean'
}
function isFunction (o) { //是否函数
return Object.prototype.toString.call(o).slice(8, -1) === 'Function'
}
function isNull (o) { //是否为null
return Object.prototype.toString.call(o).slice(8, -1) === 'Null'
}
function isUndefined (o) { //是否undefined
return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined'
}