typeof的运算
先上代码
typeof 1 === true ? 1 : 0
控制台打印可以看到答案是0,因为typeof先进行计算。如果改成下面这样:
typeof(1 === true ? 1 : 0)
答案则是number
typeof运算符本身只会返回字符串,
1. undefined
2. boolean
3. string
4. number
5. object
6. function
typeof来判断数据类型会有几个坑:
- null返回的是object,但是不能当对象使用
var obj = null;
if (typeof obj === 'object') {
obj.a(); // 报错
}
- 对NaN返回的是number,但是不能进行算术运算
var obj = {};
var num = parseInt(obj.a);
if (typeof num === 'number') {
num = num + 10; // 执行后num还是NaN
}
- 不能区分对象、数组、正则,对它们的操作返回都是'object'
var obj = {};
var arr = [];
var reg = /abc/g;
console.log(typeof obj);
console.log(typeof arr);
console.log(typeof reg);