资讯专栏INFORMATION COLUMN

js类型检测

roadtogeek / 2075人阅读

摘要:在中我们通常使用来检测变量的类型但是在一些复杂情况下就显得力不从心了下面我们来说说和使用这三个进行类型的检测检测中的基本类型还是可以的对于和就比较特殊了对于函数数组对于下面的检测就比较混乱了该函数用来查看对象的构造函数这里需要注意的是对于和

在javascript中我们通常使用typeof()来检测变量的类型,但是在一些复杂情况下typeof()就显得力不从心了,下面我们来说说typeof,constructortoString,使用这三个进行类型的检测.

typeof

typeof检测js中的基本类型还是可以的.

var num = 1;
typeof(num) // number
var str = "hello";
typeof(str); // string
var bool = true;
typeof(bool); // boolean

对于undefinednull就比较特殊了,

typeof(undefined); // undefined
typeof(null); // object

对于函数、数组

function  a(){};
typeof(a); // function
var arr = [];
typeof(arr); // object

对于下面的检测就比较混乱了:

typeof new Boolean(true) === "object";
typeof new Number(1) ==== "object";
typeof new String("abc") === "object";
typeof new Date() === "object";
constructor

该函数用来查看对象的构造函数

var bool = true;
console.log(bool.constructor == Boolean);// true
var num = 1; 
console.log(num.constructor == Number); // true
var str = "hello";
console.log(str.constructor == String); // true

这里需要注意的是:
对于 undefinednull ,不能够使用 construcor检测.

toString

使用toString检测,必须使用Object.prototype.toString(),
先来看看这个东东输出什么鬼:

console.log(Object.prototype.toString()); // [object Object]

那么如何使用toString()来进行检测呢?这里使用 call()来改变this的指向,

var bool = true;
console.log(Object.prototype.toString.call(bool)); // [object Boolean]
var num = 1;
console.log(Object.prototype.toString.call(num)); // [object Number]
var str = "hello";
console.log(Object.prototype.toString.call(str)); // [object String]
var arr = [];
console.log(Object.prototype.toString.call(arr)); // [object Array]
var a = undefined;
console.log(Object.prototype.toString.call(a)); // [object Undefined]
var b = null;
console.log(Object.prototype.toString.call(b)); // [object Null]

可以看出 使用Object.prototype.toString.call()来检测 是比较完美的.推荐使用.

补充 instanceof

检测某个实例是否在某个对象的原型链上 原型链__proto__,

var c = [];
console.log(c instanceof Object); //true
var d = 123;  // 这些 普通类型 并不是对象
console.log(d instanceof Object); //false
var str = "hello"; //  不是对象
console.log(str instanceof Object); //false
var num = new Number(123);
console.log(num instanceof Object);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78781.html

相关文章

  • JS类型(三):JS类型检查

    摘要:正文一基本类型检测为什么说是基本类型检测对于这三种类型经常用到的基本类型检测是正确的。为什么说是更好的检测方法上面的两种方法要么是只能检测基本类型,要么是只能检测引用类型,还存在不支持检测的情况。 前言 前两篇文章主要是一直在讨论JS类型的转换,那么怎么才能检测JS的数据类型呢?检测数据类型在工程中经常用到,常见的JS类型检测有三种方法: 1. typeof 2. instanceof...

    ad6623 评论0 收藏0
  • JS基本类型类型检测

    摘要:基本类型和类型检测类型基本类型,,,,,类型检测在开发中难免会遇到类型检测,以下就是常用一些方法可以检测基本类型蛋蛋君但是使用检测的时候会返回。 JS基本类型和类型检测 类型 基本类型:string,number,null,undefined,boolean,object 类型检测 在开发中难免会遇到类型检测,以下就是常用一些方法 typeof: typeof可以检测基本类型 typ...

    JowayYoung 评论0 收藏0
  • JS专题之数据类型类型检测

    摘要:运算符可以用来检测某个构造函数的属性是否存在于另外一个要检测对象的原型链上。使用方法可以获取到变量的准确的数据类型就能解决基本包装类型的检测错误和的检测不安全。 本文共 1750 字,读完只需 7 分钟 数据类型有哪些? ECMAScript 的数据类型分为简单数据类型(也被称为基本数据类型,原始数据类型): Undefined Null String Number Boolean ...

    since1986 评论0 收藏0
  • js检测数据类型的四种方法

    摘要:中检测数据类型的四种方法前言先说一下中的数据类型有哪几类主要分类两大类型,基本类型和引用类型。用法结果这样一看,似乎能满足的所有数据类型,那我们看下继承之后是否能检测出来结果小结可以看出,可用于检测所有的数据类型。 js中检测数据类型的四种方法 前言 先说一下JavaScript中的数据类型有哪几类?主要分类两大类型,基本类型和引用类型。 showImg(https://segment...

    darryrzhong 评论0 收藏0
  • <<编写可维护的javascript>> 笔记8(避免'空比较&#

    摘要:中常常会看到这种代码变量与的比较这种用法很有问题用来判断变量是否被赋予了一个合理的值比如不好的写法执行一些逻辑这段代码中方法显然是希望是一个数组因为我们看到的拥有和这段代码的意图非常明显如果参数不是一个数组则停止接下来的操作这种写法的问题在 js中, 常常会看到这种代码: 变量与null的比较(这种用法很有问题), 用来判断变量是否被赋予了一个合理的值. 比如: const Contr...

    young.li 评论0 收藏0
  • js基础--数据类型检测的相关知识

    摘要:话不多说,我们开干,加油干货满满今天,我们一起学习一下中的数据类型检测相关的知识,也顺便做个总结。基本数据类型又包括,还有一个新增的,我们这先不说。 欢迎访问我的个人博客:http://www.xiaolongwu.cn 前言 最近工作有点忙,好几天都没更新技术博客了。 周末起床打开有道云笔记,发现自己的博客todolist里躺了一堆只有名字的文件。 话不多说,我们开干,加油! 干货满...

    MangoGoing 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<