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来判断数据类型会有几个坑:

  1. null返回的是object,但是不能当对象使用
var obj = null;
if (typeof obj === 'object') {
    obj.a(); // 报错
}
  1. 对NaN返回的是number,但是不能进行算术运算
var obj = {};
var num = parseInt(obj.a);
if (typeof num === 'number') {
    num = num + 10; // 执行后num还是NaN
}
  1. 不能区分对象、数组、正则,对它们的操作返回都是'object'
var obj = {};
var arr = [];
var reg = /abc/g;
console.log(typeof obj);
console.log(typeof arr);
console.log(typeof reg);
posted @ 2017-08-15 14:59  douglasvegas  阅读(225)  评论(0编辑  收藏  举报