前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >js判断数据类型

js判断数据类型

作者头像
hss
发布于 2022-02-25 11:15:10
发布于 2022-02-25 11:15:10
10.9K00
代码可运行
举报
文章被收录于专栏:前端卡卡西前端卡卡西
运行总次数:0
代码可运行

判断数据类型

隐式转换

0,’’,NaN,false,null,undefined,会转化为false

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (undefined == true) {
    console.log('true');
} else {
    console.log('false');
}
//结果输出false
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var str = 'abc'
var num = 1
var bool = true
var arr = [1, 2, 3]
var obj = { name: 'haoxl', age: 18 }
var fun = function () { console.log('I am a function') }
var und = undefined
var nul = null
var str1 = new String(123)
var num1 = new Number(123)
var bool1 = new Boolean(true)
var arr1 = new Array([])
var obj1 = new Object({})
var fun1 = new Function('a', 'b')

typeof

typeof,返回的结果用该类型的字符串(全小写字母)形式 缺点:对象,数组,null,以及所以new的东西,都返回object

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
console.log(typeof str);    //string
console.log(typeof num);    //number
console.log(typeof bool);   //boolean
console.log(typeof arr);    //object
console.log(typeof obj);    //object
console.log(typeof fun);    //function
console.log(typeof und);    //undefined
console.log(typeof nul);    //object
console.log(typeof str1);   //object
console.log(typeof num1);   //object
console.log(typeof bool1);  //object
console.log(typeof arr1);   //object
console.log(typeof obj1);   //object
console.log(typeof fun1);   //function

instanceof

A instanceof B,A对象是不是B构造函数构造出来的。A对象的原型链上有没有B的原型。

instanceof不能区别undefined和null, 而且对于基本类型如果不是用new声明的则也测试不出来, 对于是使用new声明的类型,它还可以检测出多层继承关系。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
console.log(str instanceof String, str instanceof Object);      // false,false
console.log(num instanceof Number, num instanceof Object);      // false,false
console.log(bool instanceof Boolean, bool instanceof Object);   // false,false
console.log(arr instanceof Array, arr instanceof Object);       // true,true
console.log(obj instanceof Object);                             // true
console.log(fun instanceof Function, fun instanceof Object);    // true,true
console.log(und instanceof Object);                             // false
console.log(nul instanceof Object);                             // false
console.log(str1 instanceof String, str1 instanceof Object);    // true,true
console.log(num1 instanceof Number, num1 instanceof Object);    // true,true
console.log(fun1 instanceof Function, fun1 instanceof Object);  // true,true
console.log(obj1 instanceof Object);                            // true

constructor

可以判断数组和对象, 缺点:undefined和null没有contructor属性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
console.log(str.constructor === String, str.constructor === Object);        // true,false
console.log(num.constructor === Number, num.constructor === Object);        // true,false
console.log(bool.constructor === Boolean, bool.constructor === Object);     // true,false
console.log(arr.constructor === Array, arr.constructor === Object);         // true,false
console.log(obj.constructor === Object);                                    // true
console.log(fun.constructor === Function, fun.constructor === Object);      // true,false
console.log(str1.constructor === String, str1.constructor === Object);      // true,false
console.log(num1.constructor === Number, num1.constructor === Object);      // true,false
console.log(bool1.constructor === Boolean, bool1.constructor === Object);   // true,false
console.log(arr1.constructor === Array, arr1.constructor === Object);       // true,false
console.log(obj1.constructor === Object);                                   // true
console.log(fun1.constructor === Function, fun1.constructor === Object);    // true,false

Object.prototype.toString.call()

原理:toStirng方法返回一个变量(包含对象)的字符串表示方式。

toString方法是Objectde 原型方法,如果直接调用toString()方法,会先经过一个包装类的过程,然后调用包装类上面继承并重写过的toString()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
console.log("jerry".toString());    //jerry
console.log((1).toString());        //1
console.log([1,2].toString());      //1,2
console.log(new Date().toString());//Wed Dec 21 2016 20:35:48 GMT+0800 (中国标准时间)
console.log(function(){}.toString());//function (){}

验证:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var arr=[1,2,3];
console.log(Array.prototype.hasOwnProperty("toString"));//true
console.log(arr.toString());//1,2,3
delete Array.prototype.toString;//删除实例属性
console.log(Array.prototype.hasOwnProperty("toString"));//false
console.log(arr.toString());//"[object Array]"
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
console.log(Object.prototype.toString.call(str));   //[object String]
console.log(Object.prototype.toString.call(num));   //[object Number]
console.log(Object.prototype.toString.call(bool));  //[object Boolean]
console.log(Object.prototype.toString.call(arr));   //[object Array]
console.log(Object.prototype.toString.call(obj));   //[object Object]
console.log(Object.prototype.toString.call(fun));   //[object Function]
console.log(Object.prototype.toString.call(und));   //[object Undefined]
console.log(Object.prototype.toString.call(nul));   //[object Null]

//使用正则获取[object Function]里面的数据类型
var regstr = '[object Function]'
var res = regstr.match(/\s+(\w+)/)
console.log(res[1]);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 判断数据类型
    • 隐式转换
    • typeof
    • instanceof
    • constructor
    • Object.prototype.toString.call()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档