在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” | 
再看看具体的实例:
立即学习“Java免费学习笔记(深入)”;
// Numbers
typeof 37 === 'number';
typeof 3.14 === 'number';
typeof Math.LN2 === 'number';
typeof Infinity === 'number';
typeof NaN === 'number'; // 尽管NaN是"Not-A-Number"的缩写,意思是"不是一个数字"
typeof Number(1) === 'number'; // 不要这样使用!
// Strings
typeof "" === 'string';
typeof "bla" === 'string';
typeof (typeof 1) === 'string'; // typeof返回的肯定是一个字符串
typeof String("abc") === 'string'; // 不要这样使用!
// Booleans
typeof true === 'boolean';
typeof false === 'boolean';
typeof Boolean(true) === 'boolean'; // 不要这样使用!
// Symbols
typeof Symbol() === 'symbol';
typeof Symbol('foo') === 'symbol';
typeof Symbol.iterator === 'symbol';
// Undefined
typeof undefined === 'undefined';
typeof blabla === 'undefined'; // 一个未定义的变量,或者一个定义了却未赋初值的变量
// Objects
typeof {a:1} === 'object';
// 使用Array.isArray或者Object.prototype.toString.call方法可以从基本的对象中区分出数组类型
typeof [1, 2, 4] === 'object';
typeof new Date() === 'object';
// 下面的容易令人迷惑,不要这样使用!
typeof new Boolean(true) === 'object';
typeof new Number(1) ==== 'object';
typeof new String("abc") === 'object';
// 函数
typeof function(){} === 'function';
typeof Math.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学习教程】
以上就是javascript的typeof可返回哪些数据类型的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
 
                 
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                            Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号