一、使用数据前要做哪些工作?为什么?
- 对数据类型进行判断
- 判断的目的是分类
- 分类是为了明确当前类型的功能然后确定如何使用
二、typeof 运算符
1、基本语法
typeof a
or
typeof (a)
2、typeof数据类型结果描述
类型 | 结果 |
---|---|
Undefined | “undefined” |
Null | “object” |
Boolean | “boolean” |
Number | “number” |
String | “string” |
Symbol (ECMAScript 6 新增) | “symbol” |
函数对象 | “function” |
任何其他对象 | “object” |
3、使用细节和注意事项
1)typeof运算符返回的数据类型本身是字符串.
2)返回七种数据类型:
String, Number, Boolean, Undefined, Object, Function ,symbol(ES6)
3)可以区别数据类型:
数值, 字符串, 布尔值, undefined, function, symbol
4)无法区分:null与对象, 一般对象与数组
typeof null === "object"; // true
正确的返回结果应该是 “null” ,但这个 bug 由来已久,在 javascript 中已经存在了将近二十年,也许永远也不会修复,因为这牵涉到太多的 Web 系统,修复它会产生更多的 bug,会令许多系统无法正常工作。
5)在对变量执行 typeof 操作时,得到的结果并不是该变量的类型,而是该变量持有的值的类型,因为 JavaScript 中的变量没有类型。
三、instanceof运算符
1、基本介绍:
- 专门用来判断对象数据的类型: Object, Array与Function
console.log(arr instanceof Array) // true
- === 全等运算符
console.log(undefined == null); // true
console.log(undefined === null); // false
2、instanceof是如何判断的?
instanceof的规则如下:
表达式: A instanceof B
如果B函数的显式原型对象在A对象的原型链上, 返回true, 否则返回false
3、示例代码:
<script type="text/javascript">
//案例1
function Foo() { }
var f1 = new Foo();
console.log(f1 instanceof Foo); // true
console.log(f1 instanceof Object); // true
//案例2
console.log(Object instanceof Function) // true
console.log(Object instanceof Object) // true
console.log(Function instanceof Object) // true
console.log(Function instanceof Function) // true
function Foo() {}
console.log(Object instanceof Foo); // false
</script>
四、typeof&instanceof可使用数据类型说明
1、基本数据类型
数据类型 | 值 | 可用操作符 |
---|---|---|
Number | 任意数值 | typeof |
String | 任意字符串 | typeof |
Boolean | true/false | typeof |
undefined | undefined | typeof/=== |
null | null | === |
2、引用数据类型
数据类型 | 可用操作符 |
---|---|
Object | typeof/instanceof |
Array | instanceof |
Function | typeof/instanceof |