js的数据类型主要分为两大类:原始(基本)数据类型,引用(复杂)数据类型
原始数据类型:number,string,boolean,null,undefined
1. number
Number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一位数字)两种值,值得注意的是NaN(not a number)也是number类型的,NaN 与其他数值进行比较的结果总是不相等的,包括它自身在内。
检测一个数是否是number类型,可以用 isNaN(),也可以直接用typeof()检测。
isNaN()返回的是一个Boolean值,也就是true和false,如果检测的内容是数字,返回的值为false,否则返回true
var num = 123;
var num1 = "mercy";
console.log(isNaN(num)); //false
console.log(isNaN(num1)); //true
typeof()直接返回的是数据的类型
var num = 123;
var num1 = "mercy";
console.log(typeof(num)); //number
console.log(typeof(num1)); //string
2. string
字符串类型,是唯一没有固定大小的原始类型。可以用字符串存储 0 或更多的字符,字符串中每个字符都有特定的位置,首字符从位置 0 开始,第二个字符在位置 1,依此类推。这意
味着字符串中的最后一个字符的位置一定是字符串的长度减1。字符串一般使用双引号("")包裹起来。
检测的话,只能用typeof()来检测
var str = "hello world";
console.log(typeof(str)); //string
3. boolean
boolean的返回值只有两种,就true或false。因此,boolean的检测十分简单,也是用typeof()检测,就不多说了。
4. null
null类型被看做空对象指针,前文说到null类型也是空的对象引用。
typeof()检测的返回值为object。
5. undefined
只有一个值,即undefined值。使用var声明了变量,但未给变量初始化值,那么这个变量的值就是undefined。
typeof()检测的返回值为undefined。
引用数据类型:object
js中对象是一组属性与方法的集合。这里就要说到引用类型了,引用类型是一种数据结构,用于将数据和功能组织在一起。引用类型有时候也被称为对象定义,因为它们描述的是一类
对象所具有的属性和方法。
typeof()检测的返回值为object。
从上面就可以看出,有两种数据类型的检测,返回的都是object,其实还要一种数据类型array,用typeof()检测,它的返回类型也是object,那么问题来了,如何区分这三种数据类型呢?
判断类型的方法很多,这里我就只说一种:toString()方法。
toString()方法,这个是利用对象的原型来判断。在js中,有万物皆对象的说法,因此我们就可以利用Object.prototype.toString.call(检测的数据)来检测。
var num = 100;
var str = "hello world";
var arr = [1,2,3,4,5];
var obj = {
name : "张三",
age : 30,
sex : "男"
}
var nul = null;
var bool = true;
console.log(Object.prototype.toString.call(num)); //[object Number]
console.log(Object.prototype.toString.call(str)); //[object String]
console.log(Object.prototype.toString.call(arr)); //[object Array]
console.log(Object.prototype.toString.call(obj)); //[object Object]
console.log(Object.prototype.toString.call(nul)); //[object Null]
console.log(Object.prototype.toString.call(bool)); //[object Boolean]