9种数据类型,数据类型区别及判断数据类型方法
基本数据类型:
String,Number,null,undefined,Boolean (通常所说的五种原始数据类型),Symbol,BigInt (ES6新增)
引用类型:
object [基本对象,Set,Map,new RegExp(),new Date(),...], function [函数,构造函数,new Error(),...]
以上就是通常所说的9种数据类型。
Symbol:
- 唯一性,用作对象的属性
- vuex或redux中,派发
- Symbol() == Symbol() false
- 深层知识,可以自行查询Symbol上的方法
BigInt:
- Number数据类型,最大能处理的是2^53,即Number.MAX_SAFE_INTEGER得到9007199254740991,超过这个值,计算就不准确了
- 而bigint的出现就是来解决超过这个范围的值,9007199254740991n就是BigInt类型的值,如果要加1,就9007199254740991n + 1n可以得到正常计算结果90071992547409913n
- BigInt(9007199254740991) == 9007199254740991n
两种数据类型的区别:存储位置不同
原始数据类型直接存储在栈( stack )中的简单数据段,占据空间⼩、⼤⼩固定,属于被频 繁使⽤数据,所以放⼊栈中存储;
引⽤数据类型存储在堆( heap )中的对象,占据空间⼤、⼤⼩不固定,如果存储在栈中,将会 影响程序运⾏的性能;引⽤数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。
当解释器寻找引⽤值时,会⾸先检索其 在栈中的地址,取得地址后从堆中获得实体。
判断数据类型的常用方法:typeof,instanceof,constructor,Object.prototype.toString.call
typeof:(通常用来判断基本数据类型,null除外)
- 内部原理是通过判断计算机内部存储的值,而存在计算机中的值均是以二进制的数,当以000开头,便会视为是object类型,而null刚好是000,所以这也是为什么null是object类型
- 判断引用类型数据不准确,像Date,regex都会视为object
instanceof:
- 用来判断类(构造函数)的原型是否在实例的原型链上(__proto__属性IE不支持,可使用Object.getprototypeof(obj)方法获取原型)
- 不准确,因为原型的继承关系,最终都会继承于Object.prototype,并且可以通过Object,create去更改原型
- 不能判断基本数据类型 (1 instanceof Number false)
constructor:
- 可以判断基本数据类型,但是一般不用这个方法去这样做
- 不准确,constructor属性也是可以被更改
Object.prototype.toString.call:(强烈推荐使用此方法,建议封装使用)
- 标准的检测数据类型的方法,Object.prototype.toString不是转化字符串,是返回当前实例所属类的信息
数据类型转换
Number():
- 将数据转化为number类型 (ps:字符串转数字类型可以使用小技巧, '123' * 1 , + '123')
- Number('123ab') NaN
- Number(null) 0
- Number(undefined) NaN
parseInt(num, radix):
- 将数据转化为整型,接受第二个参数,表示将num以radix目标进制为基底,转化为10进制数
- 从左到右,当遇到第一个非数字止,返回非数字字符之前的数据
- parseInt('abc') NaN
- parseInt('123abc') 123
- parseInt('123.3a') 123
- parseInt(null) NaN
- parseInt(undefined) NaN
parseFloat():
- 将数据转化为浮点型
- 从左到右,当遇到第一个非数字(点不算)止,返回非数字字符之前的数据
- parseInt('123.3a') 123.3
Boolean():
- 仅以下六种为false
- 0,false,null,undefined,‘’,NaN
String():
- 将数据转化为字符串
- String(null) 'null'
- String(undefined) 'undefined'
num.toString(radix):
- 与String不同的是,不能转化null,undefined,否则会报错
- 接受一个参数,与parseInt相反,将num以10进制为基底转化为radix进制数
# 特例
undefined > 0 false
undefined < 0 false
undefined == 0 false
null == undefined true
NaN == NaN false
typeof(typeof(a)) string
typeof(typeof(undefined)) string
9种数据类型,数据类型区别及判断数据类型方法相关推荐
- Java中基本数据类型和引用数据类型的区别
Java中基本数据类型和引用数据类型的区别 一.数据类型 1.基本数据类型 2.引用数据类型 二.基本数据类型和引用数据类型的区别 1.储存位置 基本变量类型 引用变量类型 2.参数传递方式 基本变量 ...
- 数据结构——数据类型(区别与使用)
数据结构--数据类型 数据结构和数据类型 一.区别 数据结构: 数据类型: 二.数据结构的使用 举例: 三.数据类型的使用 举例: 数据结构和数据类型 一.区别 数据结构: 数据结构是计算机存储.组织 ...
- javaScript中判断数据类型的方法
目录 一.javaScript数据类型 二.javaScript判断数据类型的方法 1.使用typeof 2.使用instanceof 3.使用Object.prototype.toString.ca ...
- JavaScript判断数据类型有几种方法,以及它们的区别
JavaScript有五种数据判断类型方法: typeof instanceof constructor Object.prototype.toString.call()
- JS-循环清空对象 判断数据类型的5种常用方法
应用场景:一个页面具有大量数据录入功能,在数据录入保存成功之后,需要刷新页面,即清空所有的数据.因为我把所有的字段定义到一个对象中,所以要清空这个对象,如果字段少,可以直接赋值清空,但是数据多的时候, ...
- 数据库中数据长度(理解)和几种int数据类型的区别
MySQL数据库中几种int数据类型的区别 整数类型 整数类型在这里显示的宽度和数据类型的取值范围是没有任何关系的,这里的宽度指的是你数据显示的最大的宽度个数.如果插入的长度大于你所显示的值,只要该值 ...
- 判断数据类型的几种方式
文章目录 前言 一.数据类型有那些 二. 数据类型判断方法 1.typeof 2.instanceof 3.constructor 4.Object.prototype.toString 5.练习 6 ...
- js中判断数据类型的几种实用方法
前言 最近项目中有不少地方需要判断数据类型,但是判断数据类型也有好几种方法,并且每种方法判断的数据类型也有局限性,所以想总结一下,方便以后查阅. 分别是 typeof ,instanceof,Obje ...
- JS判断数据类型的5种方法
我们先来了解一下JS中数据类型有哪些 基本数据类型(值类型):String.Number.boolean.null.undefined.symbol(es6新增的) 引用数据类型 (引用类型):obj ...
最新文章
- ini文件怎么使用_ftp文件下载工具,ftp文件下载工具是怎么使用的?使用指南
- MySQL/MariaDB查询执行路径
- python中文软件-Python3.8.3下载
- 反向 Dropout,韩松团队最新工作NetAug:提高Tiny神经网络性能的新训练方法
- 实用Python库,这几个你认识不?
- jQuery框架学习第四天:使用jQuery操作元素的属性与样式
- 设计模式 接口隔离原则
- linux 编码转换-转
- ajax请求成功后打开新开窗口(window.open())被拦截的解决方法
- redis下key的过期时间详解
- [NOIP2013]华容道 题解(搜索)
- MediaDevices.getUserMedia()
- 地图的legend点击事件_手把手教你实现3D地图的定时高亮和点击事件
- attachEvent兼容各浏览器事件
- python分布式 集群_python分布式框架rq的使用
- 数据结构 笔记--向量 C++ 语言版 邓俊辉老师
- **统计出现字数最多的字符**
- Win10 1709 无法访问局域网共享问题及解决
- matlab中columns怎么用,css columns属性怎么用
- mybatis拦截器实现数据脱敏拦截器使用