数据类型转换
强制类型转换(所有的隐式转换都是强转)
所谓强制类型转换,都是使用对应数据类型类的constructor
方法,进行数据类型转换
转字符串
String(值)
数值,布尔值,undefined , Null都会直接转为对应的字符串
1 —> “1” true ----> “true” , undefined —> “undefined” null —> “null”
对象转为 “[object Object]” , 所有的对象都会转换成这个
数组可以直接使用
String(数组)
将数组中的数据连带逗号都转为数组,也可以用数组的方法,array.join()
var a = [1,2,3] var b = a.join() console.log(String(a) === b) // true
函数也可以用强制转换,通过数值,直接转为函数的字符串形式
转数值
Number(值)
字符串转数值的时候,如果出现非法字符会转为NaN,否则都是数值
console.log(Number("3.14e+2")) // 314 console.log(Number("0xFF")) // 这代表将一个十六进制的数转为十进制的 console.log("FF") // NaN console.log(Number("065")) // 这不代表八进制,在转换时0就当成数字零,这个就是十进制的65字符串形式,转为数字形式
空字符串转为数值,是0
布尔值: true —> 1 false —> 0
null ----> 0 undefined —> NaN
所有的对象在转为数值时都是NaN
!! 所有的数组在强制转换成数值时分为两步: 向将数组隐式转换为字符串,再将转换后的字符串强制转换成数值
console.log(Number([])) //====> String([]) === > "" ===> Number("") === 0 console.log(Number(["1"])) // 1 console.log(Number([1,2,3])) // NaN 为啥? 1,2,3 中 , 是非法字符
转布尔值
- Boolean(值)
- 特变记住: 0 ,“”(空字符串), undefined, Null,false,NaN —> false
- 其他的所有的类型都是true
- 数组在强制转换成布尔值时,不会优先转换成字符串,数组本身是引用类型的,所有的引用类型都是 true
console.log(Boolean([])) // true
转对象类型
任何类型转换成对象时,都是该类型的对象类型
Object(值)
console.log(Object(1)) console.log(Object("a")) console.log(Object(true)) console.log(Object({1:2})) var a = function(){console.log(true)} console.log(Object(a))
- 在js中万物接对象,此方法可以理解为拿到了最顶层的对象原型,这个在对象的原型链处细说,可以再对象原型中拿到一些静态的方法,比如说第二个,拿到的是字符串的对象原型,可以再里面看到字符串的一些方法
转Symbol型
- Symbol(值)
- 当转换的类型不是数值或者字符串时,都会先隐式(强制)转为字符,在转唯一型
- 不能转换 undefined 和 Null
入职的第一期工作,直接带上痛苦面具,但停更这么多天,主要还是懈怠了,不行得坚持