JavaScript 中的类型转换
javascript 可以进行强制类型转换和隐性类型转换,这里整理了一些常见的类型转换的情况,如有遗漏的情况,欢迎补充!
字符串转数组
字符串:const str = "hello World"
const str = "helloWorld"
let a = [], b = [], c = [], d = [], e = [], f = [], g = []
// 第一种
a = str.split('')
// 第二种
b = [...str]
// 第三种
c = Array.from(str)
// 第四种
let len = str.length
for (let i = 0; i < len; i++) {
d.push(str.charAt(i))
}
// 第五种
for (const item in str) {
if (Object.hasOwnProperty.call(str, item)) {
const element = str[item];
e.push(element)
}
}
// 第六种
f = Object.values(str)
g = Object.values.call('', str)
数组转字符串
let arr = ['h', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd']
let a = '', b = '', c = '', d = '', f = ''
// 第一种
// a = arr.join("-")
a = arr.join("")
// 第二种
b = (arr + "").replace(/,/g, '')
// 第三种
c = arr.toString().replace(/,/g, '')
// 第四种
for (let i = 0, len = arr.length; i < len; i++) {
d += arr[i]
}
// 第五种 使用for of,不要使用for in,因为forIn 在循环的时候,顺序是不确定的
for(let i of arr){
f += i
}
布尔 Boolean
Boolean 如果需要,作为第一个参数传递的值将转换为布尔值。如果省略或值
0
,-0
,null
,false
,NaN
,undefined
,或空字符串(""
),该对象具有的初始值false
。所有其他值,包括任何对象,空数组([]
)或字符串"false"
,都会创建一个初始值为true
的对象。**注意:**不要将基本类型中的布尔值
true
和false
与值为true
和false
的Boolean
对象弄混了 JavaScript|MDN
MDN推荐在声明已给 boolean
的时候不用new 的方式
booleanvar x = Boolean(expression); // 推荐
var x = !!(expression); // 推荐
var x = new Boolean(expression); // 不太好
注意这里通过Boolean
new 出来实例,即使是false 类型的,if
判断也是可以通过过
// 初始值`false` 的Boolean 实例
let fla1 = new Boolean(0)
let fla2 = new Boolean(-0)
let fla3 = new Boolean(null)
let fla4 = new Boolean(false)
let fla5 = new Boolean(NaN)
let fla6 = new Boolean(undefined)
let fla7 = new Boolean('')
let flaArr = [fla1,fla2,fla3,fla4,fla5,fla6,fla7]
flaArr.map(flaItem=>{
if(flaItem) console.log("循环执行了")
})
// 应为实例是一个对象,所以可以通过if 判断
flaArr.map(flaItem=>{
console.log(flaItem) // 全部都是 Boolean {false}
console.log(typeof flaItem) //全部都是 object
})
使用推荐的方法
let fla1 = Boolean(0)
let fla2 = Boolean(-0)
let fla3 = Boolean(null)
let fla4 = Boolean(false)
let fla5 = Boolean(NaN)
let fla6 = Boolean(undefined)
let fla7 = Boolean('')
let flaArr = [fla1,fla2,fla3,fla4,fla5,fla6,fla7]
flaArr.map(flaItem=>{
if(!flaItem) console.log("循环执行了") //全部打印“循环执行了” ,注意这里的if取反了
})
flaArr.map(flaItem=>{
console.log(flaItem) // 全部都是 false
console.log(typeof flaItem) // 全部都是 boolean ,注意这个是基本累心,不是Boolean包装对象
})
回归正题,开始 boolean 类型的转换
转为字符串
// 转为字符串
console.log(String(false)) // false string
console.log(String(true)) // true string
console.log((false)+"") // false
console.log((true)+"") // true
转为数值
console.log(Number(false)) // 0
console.log(Number(true)) // 1
console.log((false)+0) // 0
console.log((true)+0) // 1
null 和 undefined
转Boolean
Boolean(null) // false
boolean(undefined) // false
转数值
Number(null) // NaN
Number(undefined) // NaN
转字符串
String(null) // 'null'
Stirng(undefined) // 'undefined'
数值 Number
数值转字符
2..toString(); // 第二个点号可以正常解析
2 .toString(); // 注意点号前面的空格
(2).toString(); // 2先被计算
2 + ''