js数据类型转换
文章描述
js数据类型转换
转换为数字
Number():可以把任意值转换成数字,如果要转换的字符串中有不是数字的值,则会返回NaN
Number('1') // 1
Number(true) // 1
Number('123s') // NaN
Number({}) //NaN
parseInt(string,radix):解析一个字符串并返回指定基数的十进制整数,radix是2-36之间的整数,表示被解析字符串的基数。
parseInt('2') //2
parseInt('2',10) // 2
parseInt('2',2) // NaN
parseInt('a123') // NaN 如果第一个字符不是数字或者符号就返回NaN
parseInt('123a') // 123
parseFloat(string):解析一个参数并返回一个浮点数
parseFloat('123a')
//123
parseFloat('123a.01')
//123
parseFloat('123.01')
//123.01
parseFloat('123.01.1')
//123.01
隐式转换
let str = '123'
let res = str - 1 //122
str+1 // '1231'
+str+1 // 124 在一个变量之前加个操作符+, -, 可以让这个字符串转换成数值类型,相当于调用Number()
转换为字符串
.toString() ⚠️注意:null,undefined不能调用
Number(123).toString()
//'123'
[].toString()
//''
true.toString()
//'true'
String() 都能转
String(123)
//'123'
String(true)
//'true'
String([])
//''
String(null)
//'null'
String(undefined)
//'undefined'
String({})
//'[object Object]'
隐式转换:当+两边有一个是字符串,另一个是其它类型时,会先把其它类型转换为字符串再进行字符串拼接,返回字符串
let a = 1
a+'' // '1'
转换为布尔值
0, ''(空字符串), null, undefined, NaN会转成false,其它都是true
Boolean()
Boolean('') //false
Boolean(0) //false
Boolean(1) //true
Boolean(null) //false
Boolean(undefined) //false
Boolean(NaN) //false
Boolean({}) //true
Boolean([]) //true
条件语句
let a
if(a) {
//... //这里a为undefined,会转为false,所以该条件语句内部不会执行
}
隐式转换 !!
let str = '111'
console.log(!!str) // true
{}和[]的valueOf和toString的返回结果?
valueOf:返回指定对象的原始值
对象 返回值
Array 返回数组对象本身。
Boolean 布尔值。
Date 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。
Function 函数本身。
Number 数字值。
Object 对象本身。这是默认情况。
String 字符串值。
Math 和 Error 对象没有 valueOf 方法。
toString:返回一个表示对象的字符串。默认情况下,toString() 方法被每个 Object 对象继承。如果此方法在自定义对象中未被覆盖,
toString() 返回 "[object type]",其中 type 是对象的类型。
({}).valueOf() //{}
({}).toString() //'[object Object]'
[].valueOf() //[]
[].toString() //''