在javascript中,typeof操作符可返回的数据类型有:“undefined”、“object”、“boolean”、“number”、“string”、“symbol”、“function”等。
本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。
使用 typeof
操作符可以返回变量的数据类型。
我们来看看各个数据类型对应typeof的值:
数据类型 | 结果 |
---|---|
Undefined | “undefined” |
Null | “object” |
布尔值 | “boolean” |
数值 | “number” |
字符串 | “string” |
Symbol (ECMAScript 6 新增) | “symbol” |
宿主对象(JS环境提供的,比如浏览器) | Implementation-dependent |
函数对象 | “function” |
任何其他对象 | “object” |
再看看具体的实例:
//Numberstypeof37==='number';typeof3.14==='number';typeofMath.LN2==='number';typeofInfinity==='number';typeofNaN==='number';//尽管NaN是"Not-A-Number"的缩写,意思是"不是一个数字"typeofNumber(1)==='number';//不要这样使用!//Stringstypeof""==='string';typeof"bla"==='string';typeof(typeof1)==='string';//typeof返回的肯定是一个字符串typeofString("abc")==='string';//不要这样使用!//Booleanstypeoftrue==='boolean';typeoffalse==='boolean';typeofBoolean(true)==='boolean';//不要这样使用!//SymbolstypeofSymbol()==='symbol';typeofSymbol('foo')==='symbol';typeofSymbol.iterator==='symbol';//Undefinedtypeofundefined==='undefined';typeofblabla==='undefined';//一个未定义的变量,或者一个定义了却未赋初值的变量//Objectstypeof{a:1}==='object';//使用Array.isArray或者Object.prototype.toString.call方法可以从基本的对象中区分出数组类型typeof[1,2,4]==='object';typeofnewDate()==='object';//下面的容易令人迷惑,不要这样使用!typeofnewBoolean(true)==='object';typeofnewNumber(1)===='object';typeofnewString("abc")==='object';//函数typeoffunction(){}==='function';typeofMath.sin==='function';
我们会发现一个问题,就是typeof来判断数据类型其实并不准确。比如数组、正则、日期、对象的typeof返回值都是object,这就会造成一些误差。
所以在typeof判断类型的基础上,我们还需要利用Object.prototype.toString方法来进一步判断数据类型。
我们来看看在相同数据类型的情况下,toString方法和typeof方法返回值的区别:
数据 | toString | typeof |
---|---|---|
“foo” | String | string |
new String(“foo”) | String | object |
new Number(1.2) | Number | object |
true | Boolean | boolean |
new Boolean(true) | Boolean | object |
new Date() | Date | object |
new Error() | Error | object |
new Array(1, 2, 3) | Array | object |
/abc/g | RegExp | object |
new RegExp(“meow”) | RegExp | object |
可以看到利用toString方法可以正确区分出Array、Error、RegExp、Date等类型。
所以我们一般通过该方法来进行数据类型的验证。
感谢你能够认真阅读完这篇文章,希望小编分享的“javascript的typeof可返回了什么数据类型”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!