1. 分类(2大类)
a 基本(值)类型
* Number: 任意数值
* String: 任意文本
* Boolean: true/false
* undefined: undefined
* null: null
b 对象(引用)类型
* Object: 任意对象
* Array: 特别的对象类型(下标/内部数据有序)
* Function: 特别的对象类型(可执行)
2. 判断
a、 typeof:
* 可以区别: 数值, 字符串, 布尔值, undefined, function
* 不能区别: null与对象, 一般对象与数组
b、 instanceof
* 专门用来判断对象数据的类型: Object, Array与Function
c 、===
* 可以判断: undefined和null
<script type="text/javascript">
var a
console.log(a, typeof a==='undefined', undefined==='undefined') // undefined true false
a = null
console.log(typeof a) // 'object' js语法的bug
a = {
a1: [123, true, console.log],
a2: function () {
console.log('a2()')
}
}
console.log(typeof a, typeof a.a1, typeof a.a2) // 'object' 'object' 'function'
console.log(typeof a.a1[2]) // 'function'
a.a1[2]('.....')
console.log(a.a1 instanceof Array, a instanceof Array) // true false
console.log(a.a1 instanceof Object, a instanceof Object) // true true
</script>
3、 undefined与null的区别?
* undefined代表没有赋值
* null代表赋值了, 只是值为null
a.什么时候值是undefined?
1). 声明但没有赋值的变量
var a console.log(a) // undefined
2). 对象不存在的属性的值
console.log({}.xxx) // undefined
3). 调用的函数没有指定return数据
console.log(
(function () {
var b = 3
})()
) ;// undefined
b、什么时候给变量赋值为null呢?
1). 初始时, 赋值为null
var b = null
// 获取数据, 确定对象
b = {
name: 'Tom',
age: 12
}
2). 结束时, 赋值为null
b = null // b对象不在使用,让b所指向的对象成为垃圾对象, 后面垃圾回收器就会回收释放
console.log(b)
4、严格区别变量类型与数据类型?
* js的变量本身是没有类型的, 变量的类型实际上是变量内存中数据的类型
* 变量类型:
* 基本类型: 保存基本类型数据的变量
* 引用类型: 保存对象地址值的变量
* 数据对象
* 基本类型
* 对象类型
var c = []
console.log([] instanceof Array) // true
console.log(c instanceof Array) // true