A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 李盼盼老师 于 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();

【检测方法】
  • 使用typeof检测
[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 一般是,假设某个变量是某一种数据类型,然后用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来测试数据类型的一个方法

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马