JavaScript 数据类型检测
来源:互联网 发布:华傲数据借贷产品 编辑:程序博客网 时间:2024/05/21 08:46
js 的数据类型分为两类: 原始类型(Primitive type)和引用类型(Reference type),两者在内存中的存储位置不同。判断一个变量属于哪种类型,两种类型额判断方式也有所不同,分别使用typeof
和instanceof
进行检测。
原始类型
原始类型又叫做基本类型,在ECMAScript5标准中共规定了5中基本类型,分别是:
- 数组类型(
Number
) - 字符串类型(
String
) - 布尔值(
Boolean
) Null
Undefined
- 符号对象(
Symbol
)ES6新增的
原始类型存储在内存栈(stack)中 ,也就是说直接存储的变量的值。对于原始类型的访问是值访问,我们可以直接操作变量的实际值。
引用类型
除了6中原始类型之外都是引用类型:
- 对象类型(
Object
) - 数组类型(
Array
) - 日期类型(
Date
) - 错误类型(
Error
) - 正则表达式类型(
RegEx
) - 函数类型(
Function
) - 在ES6中还新增了
Promise
和Map
的引用类型
引用类型是存储在内存堆(heap)中的对象,也就是说直接存储的变量的值是一个指向原始对象的指针。对于原始类型的访问时引用访问,我们不能直接操作对象的实际内存空间
原始类型的检测
原始类型的变量,除了null
之外都可以使用typeof
进行检测。typeof
使用:
typeof val/(val)
所有返回结果如下:
typeof 12/(12) // 'number'
typeof '12'/('12') // 'string'
typeof true/(true) // 'boolean'
typeof undefined/(undefined) // 'undefined'
typeof null/(null) // 'object'
typeof 12/(12) // number
对于原始类型的null
类型的判断类型时应该使用 === 或者 !== 判断
引用类型额检测
在JavaScript中Object
是所有引用类型的基类型,所以大多数的引用类型使用typeof
判断的时候都返回object,Function
返回function。所有对于引用类型的检测使用instanceof
判断,语法:
value instanceof constructor
instanceof:可以用来判断某个构造函数的prototype属性是不是存在于一个要检测的对象的原型链上。
- 普遍用法:
A instanceof B: 检测B.prototype是否存在于参数A的原型链上。使用instanceof判断一个实例是否属于某个类型
function B () { // TODO..}var b = new B();console.log(b instanceof B) // true
继承关系
instanceof 可以在继承关系中用来判断一个实例是否属于它的父类型.function A () {}function B () {}B.prorotype = new A()var b = new B()console.log(b instanceof B) // trueconsole.log(b instanceof A) // true
0 0
- 浅谈JavaScript数据类型检测
- javascript中的数据类型检测
- JavaScript-数据类型-类型检测
- JavaScript 数据类型检测
- javascript数据类型检测typeof
- 检测 JavaScript 的数据类型
- 【JavaScript】数据类型检测
- 浅谈javascript的数据类型检测
- JavaScript中的数据类型检测问题
- javascript的数据类型与检测
- JavaScript 基本数据类型 与类型检测
- JavaScript数据类型检测的四种方式
- javascript检测数据类型的5种方法
- 数据类型检测
- 检测数据类型
- 安全检测JavaScript基本数据类型和内置对象
- JavaScript——判断js数据类型(类型检测)
- 在javaScript中检测数据类型的几种方式
- Code::Block导出makefile文件
- 第十六周项目一 验证算法——快速排序
- 实战:微信小程序支付开发具体流程
- 如何查看Windows下端口占用情况
- imageview scaletype属性详解,最好一个matrix属性好用
- JavaScript 数据类型检测
- IOS异步获取数据并刷新界面dispatch_async的使用方法
- java并发编程系列之Lock的使用
- Css 多行文本溢出隐藏...
- Architectures、Valid Architectures和Build Active Architecture Only
- 集合(10-位数组)
- linux下tomcat的shutdown命令杀不死进程
- 在linux环境下编译运行OpenCV程序的两种方法
- centos下Svn检出Win2008 SVN服务器上项目SSL handshake failed: SSL error: Key usage violation in certificate ha