1.分类
基本(值)类型
- String: 任意字符串
- Number: 任意的数字
- Boolean:true/false
- undefined:undefined
- null:null
对象(引用)类型
- Object: 任意对象
- Function: 一种特别的对象(可以执行)
- Array: 一种特别的对象(数值下标,内部数据时有序的)
2.判断数据类型的方法
typeof 返回数据类型的字符串表达
typeof可以判断:
- undefined
- 数值类型
- 字符串
- 布尔值
- function
不能判断 null
、object
、array
instanceof 判断对象的具体类型
为什么 instanceof 可以判断区分出具体的类型(Object、Array、Function)
- 原型链
看对象的构造函数,看看它的构造函数的类型
=== 全等
相关例子
<script type="text/javascript">
var a
console.log(a); // undefined
console.log(a, typeof a === 'undefined', a === undefined); // undefined true true
console.log(undefined === 'undefined'); // false
a = 4
console.log(typeof a === 'number'); // true
a = 'Tom' //
console.log(typeof a === 'string'); // true
a = true
console.log(typeof a === 'boolean'); // true
a = null
console.log(typeof a); // object
var b1 = {
b2: [1, 'abc', console.log],
b3: function() {
console.log('b3');
return function() {
return '1234'
}
}
}
console.log(b1 instanceof Object); // true
console.log(b1.b2 instanceof Array, b1.b2 instanceof Object); // true true
console.log(b1.b3 instanceof Function, b1.b3 instanceof Object); // true true
console.log(typeof b1.b3 === 'function'); // true
console.log(typeof b1.b2[2]); // function
b1.b2[2](4) // 4
console.log(b1.b3()()); // b3 1234
</script>
3.数据类型的相关问题
(1)undefined 与 null 的区别?
- undefined代表定义了未赋值
- null定义并赋值了,只是值为null
(2)什么时候给变量赋值为null?
- 初始赋值,表明将要赋值为对象
- 变量结束使用后,让变量指向的对象成为垃圾对象(被垃圾回收器回收)
(3)严格区别变量类型与数据类型?
- 数据的类型
- 基本类型
- 对象类型
- 变量的类型
- 基本类型:保存的就是基本类型的数据
- 引用类型:保存的是地址值
相关例子
<script>
// 实例:实例对象
// 类型:类型对象
function Person(name, age) { // 构造函数 类型
this.name = name
this.age = age
}
var p = new Person('Tom', 12) // 根据类型创建的实例对象
// 1.undefined跟null的区别
var a
console.log(a);
a = null
console.log(a);
var b = null // 初始赋值为null,表明将要赋值为对象,即object或者array或者function
// 确定对象就赋值
b = ['Tom', 12]
// 最后 让b指向的对象成为垃圾对象(被垃圾回收器回收)
b = null
var c = function() {
}
// 给c赋值其实是将后面的function对象的地址值保存到了c中
// typeof c 执行之后其实就是根据c所存储的地址值去找到它所表达的内容,然后发现是function
</script>