01、其他的简单类型→String
方法一:变量+""或变量+“aaa
”
如下:
var a = 123;
var b = a + "";
var c = a + "ccc"
console.log(typeof b) //输出string
console.log(typeof c) //输出string
方法二:调用toString()
方法
如下:
变量.toString()
[重要]该方法不会影响到原变量,它会将转换的结果返回。当然我们还可以直接写成a = a. toString()
,这样的话,就是直接修改原变量。
注意: null和undefined这两个值没有toString()
方法,所以它们不能用方法二。如果调用,会报错。
另外,Number类型的变量,在调用toString()时,可以在方法中传递一个整数作为参数。 此时它将会把数字转换为指定的进制,如果不指定则默认转换为10进制。例如:
var a = 255;
a = a.toString(2)
console.log(a) // 输出11111111
console.log(typeof a) // 输出string
方法三:使用String()函数
如下:
String(变量)
使用String()函数做强制类型转换时:
- 对于Number和Boolean而言,实际上就是调用toString()方法。
- 但是对于null和undefined ,就不会调用toString()方法。它会将null直接转换为"null".将undefined直接转换为"undefined"。
prompt():用户的输入
我们在JS中prompt()就是专用来弹出能够让用户输入的对话框。重要的是:用户不管输入什么,都是字符串。
02、其他数据类型→Number
方法一:使用Number()函数
-
情况一:字符串→数字
- 如果字符串中是纯数字,则直接将其转换为数字
- 如果字符串中有非数字的内容,则转换为NaN。( 此处可以看到Number()函数的局限性)
- 如果字符串是一个空串或者是一个全是空格的字符串 ,则转换为0
-
情况二:布尔→数字
- true转换成1
- false转换成0
-
情况三:null→数字
结果为0
-
undefined→数字
结果为NaN
方法二:parseInt()
字符串→整数【重要】
parseInt()
是专门用来对付字符串的,向下取整
parselnt()
的作用是将字符串中的有效的整数内容转为数字。parse表示"转换”,Int表示"整数”(注意Int的拼写)。例如:
var a = parselnt("5")
console.log(a) // 输出5
console.log(typeof a) // 输出number
parselnt()
还具有以下特性:
-
只保留字符串最开头的数字,后面的中文自动消失,如:
console.log(parseInt("2022年度排行11")) // 输出2022 console.log(parseInt("2022.021年度排行11")) // 输出2022(只取整数部分) console.log(parseInt("aaa2022年度排行11")) // 输出NaN
-
自带截断小数的功能:取整,向下取整,不四舍五入
例1:
var a = parseInt(4.8) + parseInt(3.6); console.log(a); // 输出7
例2:
var a = parseInt(4.8 + 3.6); console.log(a); // 输出8
-
如果对非string使用**
parseInt()
或parseFloat()
**,它会先将其转化为string然后在操作。对于非字符串的非数值类型,不要使用parseInt()
进行转换,直接使用Number()
函数进行转换如:
var a = true; console.log(parseInt(a)) // 输出NaN 因为先将a转换为"true",然后在操作 var b = null console.log(parseInt(b)) // 输出NaN 因为先将b转换为"null",然后在操作 var c = undefined console.log(parseInt(c)) // 输出NaN 因为先将c转换为"undefined",然后在操作 var d = 168.22 console.log(parseInt(d)) // 输出168 因为先将d转换为"168.22",然后在操作
-
带两个参数时,表示进制转换
console.log(parseInt(111111,2)) // 输出 63 将二进制111111转换为十进制63 console.log(parseInt(111111,3)) // 输出 364 将三进制111111转换为十进制364
方法三:parseFloat()
字符串→浮点数(小数)
parseFloat()
是专门用来对付字符串的
parseFloat()
的作用是:将字符串转换为浮点数。
parseFloat()
和parseInt()
的作用类似,不同的是,parseFloat()
可以获得有效的小数部分。
代码举例:
var a = "1024.1024sss"
console.log(parseFloat(a)) // 输出 1024.1024
03、其他数据类型→Boolean
将其他的数据类型转换为Boolean,可以使用Boolean()函数。
- 情况一:数字→布尔。除了0和NaN,其余的都是true.
- 情况二:字符串→布尔。除了空串,其余的都是true。
- 情况三::null和undefined都会转换为false.
- 情况四:对象也会转换为true.
PS :转换为Boolean的这几种情况,很重要,开发中会经常用到。
其他进制的数字
- 16进制的数字,以
0x
开头 - 8进制的数字,以0开头
- 2进制的数字,
0b
开头(不是所有的浏览器都支持: chrome和火狐支持,IE不支持)
比如070
这个字符串,如果我调用parseInt()
转成数字时,有些浏览器会当成8进制解析,有些会当成10进制解析。
所以,比较建议的做法是:可以在parseInt()
中传递第二个参数,来指定数字的进制。例如:
console.log(parseInt(111111,2)) // 输出 63 将二进制111111转换为十进制63