前端进阶-01数据类型
1. 数据类型分类
- 基本(值)类型
- string : 任意字符串
- number : 任意数字
- boolean : true/false
- undefined : undefined
- null : null
- 对象(引用)类型
- Object : 任意对象
- Function : 一种特别的对象(可执行)
- Array : 一种特别的对象(数值下标,内部数据是有序的)
2. 判断
- typeof
- 返回数据类型的字符串表达
- 不能判断:null、object 与 array
- instanceof
- 判断对象的具体类型
- ===
- 可以判断 undefined 和 null
使用案例
typeof 返回数据类型的字符串表达
1
2
3var a; // undefined
console.log(typeof a === undefined); // false
console.log(typeof a === "undefined"); // truetypeof 不能判断null
1
2
3var a = null;
console.log(typeof a === "null"); // false
console.log(typeof a); // objecttypeof 不能判断array
1
2
3var a = [];
console.log(typeof a === "array"); // false
console.log(typeof a === "object"); // truetypeof 返回的都是小写字符串
1
2
3
4
5
6
7
8
9var a = {};
var b = function(){};
console.log(typeof a === "object"); // true
console.log(typeof a === "Object"); // false
console.log(a instanceof Object) // true
console.log(typeof b === "function") // true
console.log(typeof b === "Function") // false
console.log(b instanceof Function) // true判断是否为 undefined
1
2
3var a;
console.log(typeof a === "undefined"); // true
console.log(a===undefined); // true判断是否为 null
1
2
3
4
5
6
7
8var a = null;
console.log(a===null); // true
// typeof a 返回 object
console.log(typeof a==="null"); // false;
console.log(typeof a==="object"); // true;
// 但是 null 却不是 Object 对象的实例 , 真是奇怪了呀
console.log(a instanceof Object); // false如何判断是否为数组
1
2
3
4var a = [];
console.log(a instanceof Array); // true
console.log(Array.isArray(a)); // true
console.log(Array.prototype === a.__proto__); // true
3. 相关问题
1. undefined 与 null 的区别
undefined
代表定义了未赋值;null
代表定义并赋值了,但是赋值为 null;1
2
3
4var a;
console.log(a); // undefined
a = null;
console.log(a); // null
2. 什么时候给变量赋值 null
- 初始赋值,表明将要赋值为对象
- 结束前,让对象成为垃圾对象(被回收)
1
2
3var a = null; // 初始赋值,表明将要赋值为对象
a = ['java','js'];
a = null; // 让 a 指向的对象成为垃圾对象(被垃圾回收器回收)
3. 严格区别变量类型与数据类型
- 数据类型
- 基本类型
- 对象类型
- 变量类型 (变量内存值得类型)
- 基本类型 :保存的就是基本类型数据(栈中得数据)
- 引用类型 :保存的是地址值
1
2
3
4
5
6
7
8var a = 1;
var b = "javascript";
var c = true;
var d = {};
var e = [];
var f = function(){};
// 等式右边为 数据类型,等式左边是变量类型