黑马程序员技术交流社区

标题: 【广州前端】- 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