一、基本类型number,string,boolean,undefined,null
//举例
var a = undefined;
var b = null;
var c = true;
var d = 'test';
var e = 10;
ES6中新增了一个symbol类型,暂不介绍
二、引用类型 Function,Object,Array
引用类型的值是对象,保存在堆内存中
引用类型的变量实际上是一个指针,它保存在栈中,指向堆内存中的对象,复制引用类型变量实际是复制该指针,所以他们都指向同一个对象
检测一个对象的类型,推荐使用
Object.prototype.toString方法
console.log(Object.prototype.toString.call([])); // "[object Array]"
console.log(Object.prototype.toString.call({})); // "[object Object]"
console.log(Object.prototype.toString.call(2)); // "[object Number]"
三、如何区分
-
typeof可以区分五种基本类型 -
instanceof确定一个值是哪种引用类型。
四、typeof 返回值
- 返回的类型只有六种:
string、number、boolean、undefined、object、function - 一个应用是用来检测一个对象是否已经定义或者是否已经赋值
- 通过
new创建的,还有数组类型的都是Object
| Value | Class | Type |
|---|---|---|
| "foo" | String | string |
| 1.2 | Number | number |
| true | Boolean | boolean |
| undefined | Undefined | undefined |
| new Function("") | Function | function |
| new String("foo") | String | object |
| new Number(1.2) | Number | object |
| new Boolean(true) | Boolean | object |
| new Date() | Date | object |
| new Error() | Error | object |
| [1,2,3] | Array | object |
| new Array(1, 2, 3) | Array | object |
| new RegExp("") | RegExp | object |
| {} | Object | object |
| new Object() | Object | object |