一、数据类型:
-
1、基本值类型(简单的数据类型):String(任意字符串)、Number(任意的数字)、Boolean、Undefined、Null
-
2、引用数据类型(复杂的数据类型):Object、Function(一种特别的对象)、Array(一种特别的对象,内部数据是有序的)。
二、数据类型基本介绍:
(1)Number:
- JS中所有的数值都是Number类型
- 由于内存限制并不能保存所有的数值
- NAN(not a number) JS中当对数值进行计算时没有结果返回
- 整数运算会精确,浮点数运算会丢失精度
(2)String:
- 变量加上引号变成字面量
(3)Boolean:
- 虽然Boolean类型的字面值只有两个,但ECMAScript中所有的类型的值都有与这两个Boolean值等价的值。
- 注:任何非零值都是true,包括正负无穷大,只有0 和NAN是false
- 任何非零字符串都是true,只有空字符串是false
- 任何对象都是true,只有null和undefined是false
(4)Undefined:
- Undefined是一种比较特殊的类型,表示变量未赋值,这种类型只有一种值就是undefined
(5)Null:
- 从语义上来看null表示的是一个空对象
三、判断数据类型的方法
判断数据类型有三种方法:typeof、instanceof、===
(1)typeof:返回数据类的字符串表达
var a;
console.log(a,typeof a); //undefined 'undefined'
console.log(typeof a === 'undefined',a===undefined); //true true
注:typeof 可以判断 undefined、数值、字符串、布尔值
(2)instanceof:判断对象的具体类型
var b1 = {
b2:[1,'abc',console.log],
b3:function(){
console.log('b3');
return function(){
return '123456'
}
}
}
console.log(b1 instanceof Object,b1 instanceof Array); //true false
console.log(b1.b3 instanceof Function,b1.b2 instanceof Array);//true true
console.log(b1.b3 instanceof Object,b1.b2[2] instanceof Function);//true true
console.log( b1.b3()()); //123456
注:
b1属于对象因此b1 instanceof Object
值为true b1 instanceof Array
值为false;
b1.b3属于函数b1.b3 instanceof Function
值为true 在这里我们记住 . 前面的值为对象
因为b1.b3属于函数所以b1.b3()
表示的是调用这个函数 所以 ()前面的一定会是函数
四、undefined与null的区别:
undefined:代表的定义了未赋值
null:代表定义并赋值了,值为null
五、什么时候把变量赋值为null?
- 初始时赋值:表明将要定义一个对象
- 最后赋值:表示将要释放内存,让其指向的对象为垃圾对象
六、严格区分变量类型与数据类型:
数据类型:基本类型 和 对象类型
变量的类型:基本类型(保存基本类型的数据),引用类型(保存地址值)