JS --- 数据类型

情到浓时终转凉″ 提交于 2020-01-19 00:57:18

一、数据类型分为两大类型:基本(值)类型 和 对象(引用)类型

1、基本(值)类型;

①、String类型,任意字符串;

①-①:先打印一个没有值的变量a,结果是undefined

var a;
console.log(a);   // 输出 undefined

①-②:打印a的类型,根据结果可以知道是一个undefined字符串;
因为typeof返回数据类型的字符串表达

var a;
console.log(typeof a === "undefined");   // 输出 true

要知道undefined和字符串undefined不是一种类型

console.log(undefined === "undefined");   // 输出 false

①-③:当a有一个正常的字符串的值

var a = "Document";
console.log(a);   // 输出 Document
console.log(typeof a);   // 输出 "string"
console.log(typeof a === "string");   // 输出 true

②、Number类型,任意数字;

var a = 1;
console.log(a);   // 输出 1
console.log(typeof a);   // 输出 "number"
console.log(typeof a === "number");   // 输出 true

③、boolean类型,true/false

var a = true;
console.log(a);   // 输出 true
console.log(typeof a);   // 输出 "boolean"
console.log(typeof a === "boolean");   // 输出 true

④、undefined:undefined代表定义了,未赋值;

var a;
console.log(a);   // 输出 undefined
console.log(undefined === "undefined");   // 输出 false

⑤、null:null代表定义且赋值,但值为null;

var a = null;
console.log(a);   // 输出 null
console.log(typeof a);   // 输出 "object"
console.log(typeof a === "object");   // 输出 true

所以不建议用typeof去判断是否为null,建议用如下代码

console.log(a === null);   // 输出 true

2、对象(引用)类型;

①、Object:任意对象;

①-①:一个最简单的空对象

var a = new Object();
console.log(a);   // 输出 {}
console.log(a instanceof Object);   // 输出 true

其中console.log(a instanceof Object);的意思就是:new Object()是一个构造函数,a是否是new Object()构造函数的实例;

①-②instanceof,判断对象的具体类型

var a = {
	a1:[1,"abc"],
	a2:function(){
		console.log("a2");
	}
}

console.log(a instanceof Object);   // 输出 true
console.log(a.a1 instanceof Array);   // 输出 true
console.log(a.a1 instanceof Object);   // 输出 true,因为数组Array也是一种特殊的对象
console.log(a.a2 instanceof Function);   // 输出 true
console.log(a.a2 instanceof Object);   // 输出 true,因为函数Function也是一种特殊的对象

②、Function:一种特殊的对象(可执行);

②-①:一个最简单的函数,只要在函数名后加上括号(),就可以执行函数

function box(){
	console.log("一个函数");
}
box();   // 执行结果 "一个函数"

②-②:判断函数

var boxFn = function box(){
	console.log("一个函数");
}
console.log(boxFn instanceof Function);   // 输出 true
console.log(boxFn instanceof Object);   // 输出 true,因为函数Function也是一种特殊的对象

③、Array:一种特殊的对象(数值下标,有序的数据);

var boxArr = [1,2,3,"abc",5,6];
console.log(boxArr[2]);   // 输出 3
console.log(boxArr instanceof Array);   // 输出 true
console.log(boxArr instanceof Object);   // 输出 true,因为数组Array也是一种特殊的对象

最终补充:
1、typeof返回数据类型的字符串表达,可以判断undefined / 数值 / 字符串 / 布尔值 / function,不能判断null与object、Array与object
2、instanceof,判断对象的具体类型

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!