当前栏目
js数据类型知识梳理
1. 两大数据类型
1.1 基本数据类型
- Number(数值)
- String(字符串)
- Boolean(布尔值)
- Null(空值)
- undefined(未定义)
- symbol(唯一值)
存放于栈内存中。
具有占据空间小,内存固定的特点
基本数据类型的值是不可修改的,只会被替换
1.2 引用数据类型
- Object
- Array
- Date
- Function
- RegExp
引用类型存储在堆内存中.
具有占据空间大、内存不固定的特点。 (如果存储在栈中,将会影响程序运行的性能)
引用类型在栈中只保存了指针,而实体保存在堆里。
2. 类型转换
2.1 转为数值
- Number()
接收一个全数字字符串,转为数值。
只要传的字符串中有一个不是数字的字符,或者没传字符串,就会返回 NaN
- parseInt()/parseFloat()
接收一个数字开头的字符串,转化为取整/带小数 的数值类型。
只要传的字符串不是数字开头,或者没传字符串,就会返回 NaN
- 隐式转换
所有运算符:+-*/ == === > < !=
都会隐式转为数值类型
+(加号有特殊情况) ,它既是连接符,也是运算符。
1.只要 + 两边出现字符串,就会变成字符串拼接。
2.当只有 + 后面有值,例如:+"123"等同于Number("123"),会将字符串转换为数字123
2.2 转为字符串
- toString()
除undefined、null之外,所有类型数据的原型里自带的方法。
对不同类型数据有不同的转化方法,但转出来的数据始终是字符串。
对数字可以转化成制定进制的数字字符串
对字符串转出来效果不变
对布尔值转化成字符串布尔值
对数组会转成扁平化并用逗号隔开的字符串
对对象可以判断对象的类型
- String()
跟toString效果几乎一样
不同点就是通过传入参数去使用,而不是原型方法的调用
undefined、null也能转
- 隐式转换
通过 + "" 可转化为字符串,原理是加号两边只要出现字符串就会变成字符串拼接
2.3 转为布尔
除了 0 ""(空字符串) null undefined NaN 会转换成 false 其它都会转换成 true
- 通过判断符(逻辑非运算符)
!可以转为布尔值并取反
!!可以转为正确的布尔值
- Boolean()
效果等同于!!
3. 类型判断
3.1 typeof关键字
语法: typeof 数据
- 适合用来判断基本类型,会返回基本类型的字符串
- 如果用于判断引用类型,一律返回object,所以不建议
- 需要注意一点:判断null也会返回object,因为一些特殊原因
3.2 instanceof关键字
语法:数据 instanceof 引用具体类型
- 只能用来判断引用类型 , 会返回true/false
- 如果用来判断基本类型,一律返回false
- 如果instanceof Object 都会返回true,因为引用类型本质都是对象
3.3 constructor
语法: 数据.constructor
- 基本和引用全都可以判断,会返回类型的构造函数,比较通用的方法
- console.log([].constructor === Array) //true
3.4 Object.prototype.toString.call()
也是通用的方法,基本和引用全都可以判断,不太常用的一种方法
1var arr = []
2Object.prototype.toString.call(arr) == "[object Array]" //true
3
4var func = function() {}
5Object.prototype.toString.call(func) == "[object Function]" //true
相关文章
- JDK中内嵌JS引擎介绍及使用
- 49195,npm最后的疯狂?盘点10款最有前途JavaScript构建工具
- 译文:5个增强Node.js应用程序增强功能
- 4个例子,吃透 JavaScript 实现的二叉搜索树 BST
- Vue中使用XML和JSON格式互转插件
- JDK中Jshell简单使用(JDK9版本以上或者JDK9版本)
- shiro中的JSP标签支持
- Java技术点-json转对象,对象转json
- SpringBoot+SpringDataJpa @Query之 JPQL使用书写模板(模糊查询and条件查询)
- Spring Boot中的Freemarker模版引擎引用css和js的正确姿势
- Node.js解压版的环境配置及相关常用命令
- JSP学习笔记(6)—— 自定义MVC框架
- JSP学习笔记(5)——Servlet、监听器、过滤器、MVC模式介绍
- Jsp学习笔记(4)——分页查询
- APIJSON简单使用
- JSP学习笔记(3)——JSTL 标签库
- JSP学习笔记(1)——Jsp指令、动作元素和内置对象
- JavaScript ES6 Promise对象
- Web前端——JavaScript扩展补充
- Web前端——表单提交和Js添加选项