黑马程序员技术交流社区
标题: 【广州前端】- JS 中对变量类型的判断方法总结 [打印本页]
作者: 李盼盼老师 时间: 2017-12-17 13:16
标题: 【广州前端】- JS 中对变量类型的判断方法总结
本帖最后由 李盼盼老师 于 2017-12-22 20:42 编辑
JS 中对变量类型的判断方法总结
【前言】
数据类型有哪些?
在js中,基本数据类型有:Undefined, Null, Boolean, Number和String
复杂数据类型统称为object, Object中还细分了很多具体的类型,比如:Array, Function, Date等等
【 先定义各种数据变量,方便我们后面的检测】
var num = 123;
var str = 'abcdef';
var bool = true;
var arr = [1, 2, 3, 4];
var json = {name:'wenzi', age:25};
var func = function(){ console.log('thisis function'); }
var und = undefined;
var nul = null;
var date = new Date();
var reg = /^[a-zA-Z]{5,20}$/;
varerror= new Error();
【检测方法】
[JavaScript] 纯文本查看 复制代码
console.log(
typeof num, /*结果: number */
typeof str, /*结果: string*/
typeof bool, /*结果: Boolean */
typeof arr, /*结果: object*/
typeof json, /*结果: object */
typeof func, /*结果: function*/
typeof und, /*结果: undefined*/
typeof nul,/* 结果: object*/
typeof date,/* 结果: object*/
typeof reg, /* 结果: object*/
typeof error/* 结果: object*/
);
从输出的结果来看,arr, json, nul, date, reg, error 全部被检测为object类型,其他的变量能够被正确检测出来。当需要变量是否是number, string, boolean, function,undefined, json类型时,可以使用typeof进行判断。其他变量是判断不出类型的,包括null。
还有,typeof是区分不出array和json类型的。因为使用typeof这个变量时,array和json类型输出的都是object。
使用instanceof 一般是,假设某个变量是某一种数据类型,然后用instanceof来验证我们的假设,
例如,假设变量a的数据类型number类型, 那么 console.log(a instanceof Number) 得到的结果是 true,如果a不是number类型,得到的结果就是false;
下面, 我们来使用instanceof检测前面的那些变量:
[JavaScript] 纯文本查看 复制代码
console.log(
$.type(num), /*结果是: number */
$.type(str), /*结果是: string */
$.type(bool), /*结果是: boolean */
$.type(arr), /*结果是: array */
$.type(json), /*结果是: object */
$.type(func), /*结果是: function */
$.type(und), /*结果是: undefined */
$.type(nul), /*结果是: null */
$.type(date), /*结果是: date* /
$.type(reg), /*结果是: regexp */
$.type(error) /*结果是: error*/
);
这种方法的原理,其实就是jq底部封装好了使用Object.prototype.toString.call来测试数据类型的一个方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |