JavaScript中数据类型的判断总结
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript中数据类型的判断总结,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3070字,纯文字阅读大概需要5分钟。
内容图文
![JavaScript中数据类型的判断总结](/upload/InfoBanner/zyjiaocheng/839/9b09a8143a3743108b79ee2e13a04a20.jpg)
上篇文章讲解了JavaScript中的数据类型,这篇文章将讲解该如何判断一种变量的数据类型。常用的判断变量数据类型的方法有typeof操作符、constructor、instanceof及toString方法,下面将一一讲解。
1.typeof操作符
使用typeof操作符检测出的结果为一个字符串,包括"undefined","string","number","boolean","object","function"等。下面代码列出一些基本类型的检测结果。
typeof "" // "string"
typeof 20 // "number"
typeof true // "boolean"
typeof NaN // "number"
typeof undefined // "undefined"
typeof null // "object"
typeof [] // "object"
typeof Number // "function"
typeof Math // "object"
typeof {} // "object"
可以看到基本数据类型除了null之外,都会返回正确的结果,而复杂数据类型返会返回"object"或者"function"类型。但需要注意的是,若变量是用new创建的,则使用typeof检测的时候,返回的结果即为"object",如下:
var a = new Number(10)
typeof a // "object"
2.constructor
constructor对象能检测出变量的构造函数,如下边几个例子:
var a = 10
a.constructor === Number // true
"".constructor === String // true
true.constructor === Boolean // true
[].constructor === Array // true
var obj = {}
obj.constructor === Object // true
document.constructor === HTMLDocument // true
由于null和undefined是无效的对象,所以没有constructor。可以看到的是,constructor对象似乎能够检测到所有的变量类型?但是,需要注意的事情是,对象的constructor是可以更改的,如下:
function Foo(){}
Foo.prototype = {name:'zhangsan'}
var f1 = new Foo()
f1.constructor === Foo //false
f1.constructor === Object // true
首先创建一个Foo构造函数,然后改变它的prototype为Object的实例,再使用Foo创建一个实例的时候,发现该实例的constructor指向Object而并非Foo,所以constructor检测数据类型的时候并不是很可靠,一般不推荐使用。
3.instanceof
使用方法: a instanceof B 用来判断a是否为B的一个实例,如下:
[] instanceof Array // true
"" instanceof String // false
var str = new String("123")
str instanceof String // true
2 instanceof Number // false
var num = new Number(2)
num instanceof Number // true
Math instanceof Object // true
Array instanceof Object // true
Date instanceof Function // true
可以看到有些类型使用判断的结果并不一定正确,且有些类型是没有办法使用instanceof来判断的,如null和undefined.
4.toString
Object.prototype.toString.call()可以用于检测各种类型的变量,且返回的结果是一定正确的,jQuery即使用该方法来判断变量类型,Array.isArray()方法底层也是使用这种方式来判断是否是数组的。看以下例子:
Object.prototype.toString.call("") // "[object String]"
Object.prototype.toString.call(2) // "[object Number]"
Object.prototype.toString.call(true) // "[object Boolean]"
Object.prototype.toString.call(null) // "[object Null]"
Object.prototype.toString.call(undefined) // "[object Undefined]"
Object.prototype.toString.call(window) // "[object Window]"
Object.prototype.toString.call(document) // "[object HTMLDocument]"
可以看到Object.prototype.toString.call()可以正确返回各种类型的数据,所以一般若要正确检测数据类型,推荐使用这种方法来检测。
JavaScript的数据类型分类、存储及判断的总结就到此为止。有不正确的地方欢迎指正~~~
内容总结
以上是互联网集市为您收集整理的JavaScript中数据类型的判断总结全部内容,希望文章能够帮你解决JavaScript中数据类型的判断总结所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。