首页 > 编程笔记 > JavaScript笔记
JS强制类型转换和自动类型转换
强制类型转换
JavaScript 支持使用以下函数进行强制类型转换。- Boolean(value):把参数值转换为布尔型值。
- Number(value):把参数值转换为数字。
- String(value):把参数值转换为字符串。
在下面代码中,分别调用上述 3 个函数,把参数值强制转换为新的类型值。
console.log(String(true)); //返回字符串"true" console.log(String(0)); //返回字符串"0" console.log(Number("1")); //返回数值1 console.log(Number(true)); //返回数值1 console.log(Number("a")); //返回NaN console.log(Boolean(1)); //返回true console.log(Boolean("")); //返回false
注意:
- true 被强制转换为数值 1,false 被强制转换为数值 0,而使用 parseInt() 方法转换时,都返回 NaN。
console.log(Number(true)); //返回1 console.log(Number(false)); //返回0 console.log(parseInt(true)); //返回NaN console.log(parseInt(false)); //返回NaN
- 当值包括至少一个字符的字符串、非 0 数字或对象时,Boolean() 强制转换后都会返回 true。
- 如果值是空字符串、数字 0、undefined 或 null,Boolean() 强制转换后都会返回true。
- Number() 强制转换与 parseInt() 和 parseFloat() 方法的处理方式不同,Number() 转换的是整体,而不是局部值。
console.log(Number("123abc")); //返回NaN console.log(Number("123abc")); //返回数值123
- String() 能够把 null 和 undefined 强制转换为对应字符串,而调用 toString() 方法将引发错误。
console.log(String(null)); console.log(String(undefined)); console.log(null.toString()); console.log(undefined.toString());
在 JavaScript 中,使用强制类型转换非常有用,但是应该根据具体应用场景使用,以确保正确转换值。
自动类型转换
JavaScript 能够根据具体运算环境自动转换参与运算的值得类型。下面简单介绍常用值在不同运算环境中被自动转换的值列表。值(value) | 字符串操作环境 | 数字运算环境 | 逻辑运算环境 | 对象操作环境 |
---|---|---|---|---|
undefined | "undefined" | NaN | false | Error |
null | "null" | 0 | false | Error |
非空字符串 | 不转换 | 字符串对应的数字值NaN | true | String |
空字符串 | 不转换 | 0 | false | String |
0 | "0" | 不转换 | false | Number |
NaN | "NaN" | 不转换 | false | Number |
Infinity | "Infinity" | 不转换 | true | Number |
Number.POSITIVE_INFINITY | "Infinity" | 不转换 | true | Number |
Number.NEGATIVE_INFINITY | "-Infinity" | 不转换 | true | Number |
-Infinity | "-Infinity" | 不转换 | true | Number |
Number.MAX_VALUE | "1.7976931348623157e+308" | 不转换 | true | Number |
Number.MIN_VALUE | "5e-324" | 不转换 | true | Number |
其他所有数字 | "数字的字符串值" | 不转换 | true | Number |
true | "true" | 1 | 不转换 | Boolean |
false | "false" | 0 | 不转换 | Boolean |
对象 | toString() | valueOf() 或 toString() 或 NaN | true | 不转换 |
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算