数据类型转换
所谓的数据类型转换,就是将一种数据类型转换为另一种数据类型,所以,数据类型转换包括,转换为字符串类型,转换为数字型,转换为布尔型。数据类型转换分为显式转换和隐式转换两种方式
转换成String类型
字符串拼接"+"
当 + 两边一个操作符是字符串类型,一个操作符是其它类型的时候,会先把其它类型转换成字符串再进行字符串拼接,返回字符串属于隐式类型转换,实际上是调用的String(),先转换成字符串在拼接。
var a = 123; // Number 类型
console.log(a + '字符串'); // 转换成 String 类型
** 调用toString()**
//变量.toString();
var num = 5;
console.log(num.toString());//num转换成字符串
···
**null 和 undefined 这两个值没有 toString()方法。如果调用,会报错。**
Number 类型的变量,在调用 toString()时,可以在方法中传递一个整数作为参数。此时它将会把数字转换为指定的进制,如果不指定则默认转换为 10 进制。
```js
var a = 4;
//对于Number调用toString()时可以在方法中传递一个整数作为参数
//此时它将会把数字转换为指定的进制,如果不指定则默认转换为10进制
a = a.toString(2); // 先转换为二进制,转换为string
console.log(a); // 100
console.log(typeof a); // string
使用String()函数
String()属于强制类型转换。
使用方法
String(变量)
- 对于 Number 和 Boolean 而言,本质上就是调用 toString()方法。
- 但是对于 null 和 undefined,则不会调用 toString()方法。它会将 null 直接转换为 "null"。将 undefined 直接转换为 "undefined",因为他们没有toString()的方法
转换成Number类型
使用Number()函数
Number()可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回NaN
字符串使用Number();
- 如果字符串中是纯数字,则直接将其转换为数字。
- 只要字符串中包含了非数字的内容(小数点按数字来算),则转换为 NaN。
- 如果字符串是一个空串或者是一个全是空格的字符串,则转换为 0。
Boolean使用Number()
- true 转成1
- false 转成 0
null 使用Number()
转换成0
undefined使用Number()
转换成NaN
使用 parseInt()函数
parseInt()的作用是将字符串中的有效的整数内容转为数字。解析第一个字符是数字会解析直到遇到非数字结束
var a = 10;
console.log(parseInt(a));//结果为10
//只保留字符串开头的数字,后面的中文非数字废弃,只保留整数
var b = "100.89abc"
console.log(parseInt(b));//结果为100
//不是以数字开头,转换成NaN
var c = "abc100";
console.log(parseInt(c));//NaN
//如果字符串是一个空串或者是一个全是空格的字符串,转换成NaN
var d = " ";
console.log(parseInt(d));
//Boolean转换成NaN
var e = true;
//null转换成NaN
var f = null;
//Undefined转换成NaN
var g = undefined;
console.log("boolean:"+parseInt(e)+" null:"+parseInt(f)+" undefined"+parseInt(g));
结果:
如果对非 String使用 parseInt()或 parseFloat(),它会先将其转换为 String 然后再操作。
parseFloat()函数
可以转换成浮点数,用法与parseInt() 相似。不同在于,他会保留其小数部分。
其他数据类型转换成Boolean类型
0 ''(空字符串) null undefined NaN 会转换成false 其它都会转换成true。
转换成boolean类型
隐式转换成Boolean的情况:
- 当非 Boolean 类型的数值和 Boolean类型的数值做比较时,会先把前者进行隐式转换为 Boolean类型,然后再做比较。
- 使用 !!可以显式转换为 Boolean 类型。比如 !!1的结果是true。
- 调用isNaN() ,返回结果为boolean类型。任何不能被转换为数值的参数,都会让这个函数返回 true。
常见的隐式类型转换
自增/自减运算符:++、—-
执行过程:
- 先调用Number(参数)函数;
- 然后将Number(参数)的返回结果进行 加 1 操作。返回结果为Number类型。
正号/负号:+a、-a
任何值做+a、-a、/a运算时,运算结果都会自动转换为 Number 类型。 内部调用的是 Number() 函数。
+ 号
- 当加号的两边,只要有一个是字符串的时候,就会调用 String() 函数将数字转为字符串,然后再计算。导致最终的运算结果是字符串。
- Boolean 型和数字型相加时, true 按 1 来算 ,false 按 0 来算。这里其实是先调 Number() 函数,将 Boolean 类型转换为 Number类型,然后再和 数字相加。
- null + 数字等价于:0 + 数字
- undefined + 数字计算结果:NaN
网友评论