一、数据类型分类
JavaScript的数据类型分为基本类型的对象类型:
1.1 基本类型(也称为值类型)
1. String: 任意字符串;
2.Number: 任意的数字;
3.boolean: true/false;
4. undefined: undefined;
5. null: null;
1.2 对象(引用)类型
1.Object: 任意对象;
2.Function: 一种特殊的对象(可以执行);
3.Array: 一种特别的对象(数值下标)
二、判断数据类型
这里所说的判断类型是指:typeof 和 instanceof 运算符计算的结果使用 ===/==来判断数据的类型
2.1 typeof
typeof运算符用于返回数据类型的字符串。返回的字符串是小写的类型名。typeof可以用于判断undefined / 数值 / 字符串 / 布尔值 / 函数.例如
- typeof 'hello world' => 'string'
- typeof 123 => 'number'
- typeof true => 'boolean'
- var a; typeof a => 'undefined'
- var a = function(){} typeof a => 'function'
- 注意,使用typeof计算null返回的是‘object’.var a = null ; typeof a => 'object'
- 注意,使用typeof计算数组,返回的是‘object’. var a = [1,2]; typeof a => 'object'
- 注意,typeof 不能区分null 与 Object, Array 与 Object
2.2 instanceof
instanceof是判断某个对象是否是某个类型的实例, 所有javascript对象都是Object类型,及所有的对象都使用instanceof判断是否为Object对象时都会返回true(此处需要注意基本数据类型的字面量不是对象,因此判断基本类型的字面量instanceof Object返回值是false ),即:
- 任意对象 instanceof Object => true
- undefined instanceof Object => false (基本类型字面量不是对象)
- null instance of Object => false (基本类型字面量不是对象)
- 注意: ‘hello’ instanceof Object => false; ‘hello’是基本类型的字面量
- 注意:new String('hello') instanceof Object => true; 此时的字符串是一个对象
注意以上的用法之后,instanceof 的使用就类似java中的instanceof的使用,用于判断某个对象的具体类型。例如:
- var a = function(){} a instanceof Function => true; a instanceof Object => true;
- var a = [1, 2, 3]; a instanceof Array => true; a instanceof Object => true;
2.3 ===/==
=== : 表示绝对相等,比较时不会进行类型转换。例如: typeof ‘hello’ === 'string' => true ;
== : 表示相等,比较是若数据类型不相等,会自动转换类型后在进行内容的比较。 例如:
- ‘123’ == 123 => true
- '123' === 123 => false
三、相关小问题
3.1 undefined与null的区别?
* undefined代表定义未赋值
* nulll定义并赋值了, 只是值为null
3.2 什么时候给变量赋值为null呢?
* 初始赋值, 表明将要赋值为对象
* 结束前, 让对象成为垃圾对象(被垃圾回收器回收)
3.3 严格区别变量类型与数据类型?
* 数据的类型
* 基本类型
* 对象类型
* 变量的类型(变量内存值的类型)
* 基本类型: 保存就是基本类型的数据
* 引用类型: 保存的是地址值