我们都知道,typeof的作用是辨别传入值的类型;
我们需要注意的是: (typeof的返回值统一都是 全小写的字符串)
下面列举了typeof函数可以识别的类型以及场景:话不多说,直接进入:
"undefined", //
1、未定义对象将会被识别为underfined
2、一个函数没有返回值
“boolean” //false or true
"number" //
NaN和Infinity和的方法会被识别为number
"string" //
切记,函数有返回值,typeof一个函数等于typeof它的返回值
只要识别的值是字符串 name它就会得到string
"symbol" //识别es6的symbol类型 是es6带来新的原始数据类型
“function” //
es6 class C{} 会被解析为function
Math.sin也会被解析为function
还有其他所有函数
"object" //
对象 数组 日期都会被识别为object
包装类型对象(new Boolean(true) new Number(1) new String('abc'))也会被解析object
正则也会被解析为 'object'(在chrome1~12是 function)
null 也是;
小知识:typeof document.all === 'undefined';
以上是Math的属性, 值为一个数字 所以 typeof会返回"number" 其余的对象方法都为"function"
补充:Number.MIN_SAFE_INTEGER
Number.MIN_VALUE
的类型也是"number";
但是 typeof的使用也是有限制的,譬如它并不能辨别出数组类型(Array)的值,如果我们传入的是一个数组,那他将返回"object";
具体解决看:https://i.cnblogs.com/EditPosts.aspx?opt=1