- 原始类型(基本类型)Undefined Null Boolean Number String
- 引用类型(复杂类型)Object
1、typeof检测返回对应数据类型
console.log(typeof 123); // number console.log(typeof true); // boolean console.log(typeof "hello"); // string console.log(typeof undefined); // undefined console.log(typeof null); // object // 计算机typeof 按照机器码后3位判断数据类型 // null 00000000 => object后3位为0 console.log(typeof []); // object console.log(typeof {}); // object console.log(typeof new Date()); // object console.log(typeof function () {}); // function console.log(typeof Array); // function // typeof 引用类型 object function // object + call方法 => function
字符串示例
var name1 = "Tom"; console.log(name1); // Tom console.log(typeof name1); //string var name2 = new String("Tom"); console.log(name2); // String {"Tom"} // 0: "T" // 1: "o" // 2: "m" // length: 3 console.log(typeof name2); // object
总结:
typeof 少null, 多function
2、instanceof检测返回bool: true/false
console.log([] instanceof Array); // true console.log({} instanceof Object); // true console.log(new Date() instanceof Date); // true function Person() {} console.log(new Person() instanceof Person); // true console.log([] instanceof Object); // true console.log(new Date() instanceof Object); // true console.log(new Person() instanceof Object); // true
instanceof 原型链查找
A instanceof B == True B instanceof C == True => A instanceof C == True
console.log(Object.prototype.toString.call("1")); // [object String] console.log(Object.prototype.toString.call([])); // [object Array]
总结:
1.typeof 返回值是一个字符串:
1.number string boolean
2.function(函数)
3.object(null,数组,对象)
4.undefined
2.instanceof 返回布尔值,判断A 是否为B 的实例对象,检测的是原型