JS数据类型检测

数据类型检测

相信大家有的时候判断数据类型的时候会有疑惑 1、typeof、instanceof用的话会有哪些缺陷呢? 2、哪个api只要记住的话,就可以完美判断呢?

1、typeof

返回的都是字符串

1type of Symbol() === 'symbol' 2type of null === 'object' 3type of [] === 'object' 4type of {} === 'object' 5type of console === 'object' 6type of console.log === 'function' 7 8undefined'undefined' 可直接 typeof 判断 9null'object' 但并非引用类型 (null === null) 10array 得另外加其他的判断条件 11object 因为 null arrary 均是 object 所以也无法直接通过 typeof 去判断 12function 可以直接通过 typeof 去判断

2、instanceof (instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。)

1'111' instanceof String false 2[] instanceof Array/Object true 3111 instanceof Number false 4new Date() instanceof Date/Object true 5...

3、Object.prototype.toString.call()

1Object.prototype.toString.call([]) ===> [object Array] 2Object.prototype.toString.call('tutouwanglufei') // "[object String]" 3Object.prototype.toString.call(1) // "[object Number]" 4Object.prototype.toString.call(Symbol(1)) // "[object Symbol]" 5Object.prototype.toString.call(null) // "[object Null]" 6Object.prototype.toString.call(undefined) // "[object Undefined]" 7Object.prototype.toString.call(function(){}) // "[object Function]" 8Object.prototype.toString.call({name: 'tutouwanglufei'}) // "[object Object]" 9... 10

总结:

1、instanceof可以准确的判断复杂引用数据类型,但是不能正确判断基础数据类型

2、而typeof也存在弊端,他虽然可以是判断基础数据类型(null除外),但是引用数据类型中,除了function类型除外,其他也无法判断

3、用Object.prototype.toString.call()就可以完美去判断某个变量属于什么类型

点赞
收藏

评论区

加载中...

相关推荐

一篇文章带你了解JavaScript类型转换

类型转换是一种将一种数据类型转换为另一种数据类型的方法。一、运算符的类型typeof运算符可以帮助你找到你的变量的类型。typeof运算符返回一个变量或表达式的类型。例:项目JavaScripttypeof运算符typeof运算符返回变量或表达式的类型:document.write(typeof""""typeof"Json"""

JS - typeof 与 instanceof

一、typeoftypeof操作符返回一个字符串,表示未经计算的操作数的类型使用方法如下:typeof operandtypeof(operand)operand表示对象或原始值的表达式,其类型将被返回举个例子typeof 1 // 'number'typeof '1' // 'string'

JS数据类型的几种判断方法

1.typeof(常用)typeof是一个运算符,返回值是一个字符串,用来说明变量的数据类型,可以用来判断number,string,object,boolean,function,undefined,symbol这七种类型.2.instanceof(知道即可)instanceof运算符用于检测构造函数的prototype属性是否出现在某个实例对象的原型链上,返回值为布尔值,用于指示一个变量是否属于某个对象的实例3.Object.prototype.to

面试官:JavaScript的数据类型你了解多少?

前言作为JavaScript的入门知识点,Js数据类型在整个JavaScript的学习过程中其实尤为重要。最常见的是边界数据类型条件判断问题。我们将通过这几个方面来了解数据类型:概念检测方法转换方法概念undefined、Null、Boolean、String、Number、Symbol、BigInt为基础类型;Ob

JS中 typeof,instanceof类型检测方式

在js中的类型检测目前我所知道的是三种方式,分别有它们的应用场景:1、typeof:主要用于检测基本类型.typeofundefined;//undefinedtypeof'a';//stringtypeof1;//numbertypeoftrue;//booleanty

Js中polyfill的使用限制

随着浏览器的更新,JS也在新增功能功能。这些功能为我们开发带来了很大的便利。在旧浏览器上使用,需要引入相关的polyfill才能用。然而,有些功能在旧浏览器中是无法完美实现的,只有在一定条件下才能使用。本文将为大家分析这些功能的使用限制。Symbol1.禁止用typeof和instanceof,如果要判断,建议判断是否是string。