1. 前言
JavaScript 中有五种基本数据类型(其中包括 String、Number、Boolean、Function、Symbol)、三种对象类型(其中包括 Object、Date、Array)和两种特殊类型(其中包括 Null、Undefined)。不同的类型之间运算需要先对数据的类型进行转换,类型转换是将一种数据类型转换为另一种数据类型的过程,在日常开发中,我们会经常用到。
在 JavaScript 有两种类型转换的方式,分别是隐式类型转换和强制类型转换(也叫显式类型转换)。
2. JS 隐式类型转换
隐式转换就是自动转换,通常发生在一些数学运算中。因为 JavaScript 是一种弱类型的语言,在一个表达式中,运算符两边的类型可以不同(比如一个字符串和一个数字相加),JavaScript 解释器会在运算之前将它们的类型进行转换,如下所示:
var str = "http://c.biancheng.net/"; var num = 123; var res = str + num; document.write(typeof res); // 输出:string document.write(res); // 输出:http://c.biancheng.net/123
通过运行结果可以看出,将一个字符串与一个数字相加,会得到一个字符串类型的值。如果是在 C语言或者 Java 语言中的话,上面的运算会因为运算符两边的数据类型不一致而导致报错,但在 JavaScript 中则不会,因为在运算之前 JavaScript 解释器会将上面的 num 变量隐式的转换为字符串类型,之后再进行运算。
JavaScript 中,表达式中包含以下运算符时,会发生隐式类型转换:
- 算术运算符:加(+)、减(-)、乘(*)、除(/)、取模(%);
- 逻辑运算符:逻辑与(&&)、逻辑或(||)、逻辑非(!);
- 字符串运算符:+、+=。
示例代码如下:
document.write("3" - 2); // 输出:1 document.write("3" + 2); // 输出:"32" document.write(3 + "2"); // 输出:"32" document.write("3" * "2"); // 输出:6 document.write("10" / "2"); // 输出:5 document.write(1 + true); // 输出:2 document.write(1 + false); // 输出:1 document.write(1 + undefined); // 输出:NaN document.write(3 + null); // 输出:3 document.write("3" + null); // 输出:"3null" document.write(true + null); // 输出:1 document.write(true + undefined); // 输出:NaN
通过运行结果可以得出:
- 字符串加数字,数字会转换为字符串;
- 数字减字符串,字符串会转换为数字,如果字符串无法转换为数字(例如"abc"、"JavaScript"),则会转换为 NaN;
- 字符串减数字,字符串会转换为数字,如果字符串无法转换为数字,则会转换为 NaN;
- 乘、除运算时,也会先将字符串转换为数字。
3. JS 强制类型转换
与隐式类型转换相反,强制类型转换需要手动进行,在 JavaScript 中,强制类型转换主要是通过调用全局函数来实现的,例如 Number()、Boolean()、parseInt()、parseFloat() 等。
1) 使用 Number() 函数
Number() 函数的语法格式如下:
标签:类型转换,输出,46,JavaScript,write,字符串,document,隐式 From: https://www.cnblogs.com/jiajunling/p/16788196.html