JavaScript的类型转换分为两种,显式转换(强制转换)和隐式转换(弱转换)
显式转换强制类型转换主要针对功能的需要或为了使代码变得清晰易读,人为地进行类型的转换。在 JavaScript 中,强制类型转换主要是通过调用全局函数
Boolean() toString() String() Number()、parseInt() 和 parseFloat() 来实现。
console.log(Boolean('')) //空字符串转换为false
console.log(Boolean('11')) //非空字符串转换为true
console.log(Boolean(null)) //false
console.log(Boolean(undefined)) //false
console.log(Boolean(0)) //false
console.log(Boolean(2213)) //非0转为true
console.log(Boolean({})) //true
)
toString()将除null,undefined以外的参数转为字符串,String()可以将所有类型转换为字符串类型
const a = 123
console.log(a.toString()) //‘123’
const num = 15;
console.log(num.toString(2)) //转换为二进制 ‘1111’
console.log(num.toString(8)) //转换为二进制 ‘17’
console.log(num.toString(16)) //转换为二进制 ‘f’
console.log(null.toString()) // 报错,因为null和undefined没有toString() 方法
console.log(String(null)) //'null'
console.log(String(undefined)) //'undefined'
Number()将可以转换的参数转换为十进制数字,不能转换的转为NAN
console.log(Number(' ')) // 0
console.log(Number('010')) //10
console.log(Number('+0010')) //10
console.log(Number('-0010')) //-10
console.log(Number(true)) //1
console.log(Number(false)) //0
console.log(Number(null)) //0
console.log(Number('100px')) //含有不能转换的字符px ,所以结果为 NAN
console.log(Number('100 10')) //非纯数字包含了空格 NAN
console.log(Number(undefined)) //NAN
console.log(Number(new Date() )) //现在时间毫秒数
parseInt()将可以转换的参数转为整数,不能转的转为NAN
console.log(parseInt(' ')) //NAN
console.log(parseInt('112')) //112
console.log(parseInt(' 112')) //112
console.log(parseInt('11 2')) //解析到空格时自动停止 11
console.log(parseInt('11.2')) //11
console.log(parseInt(11.2)) //11
console.log(parseInt("1101",2)) //二进制转换为十进制整数 13
console.log(parseInt("a37f",16)) //16进制转换为十进制 41855
console.log(parseInt("xy123")) //前面是非数字字符时不能转换 NAN
console.log(parseInt("123xy123")) //中间是非数字字符时,解析到非数字字符自动停止 123
parseFloat()将参数转为浮点数
console.log(parseFloat('23.12')) //23.12
console.log(parseFloat("-3.12")) //-3.12
console.log(parseFloat(.86)) //0.86
console.log(parseFloat("314.4A11")) // 解析到非数字字符,314.4
console.log(parseFloat("aaa3.14")) //开头为非数字字符,解析不了,NAN
console.log(parseFloat("3.11 2.4A56")) //解析到空格 3.11
console.log(parseFloat("31.2.5")) //两个小数点时,只解析第一个小数点 31.2
隐式转换
JavaScript的数据类型分为六种,分别为null,undefined,boolean,string,number,object。object是引用类型,其它的五种是基本类型或者是原始类型。我们可以用typeof方法打印来某个是属于哪个类型的。不同类型的变量比较要先转类型,叫做类型转换,类型转换也叫隐式转换。隐式转换通常发生在运算符加减乘除,等于,还有小于,大于等。
如果表达式中同时存在字符串类型和数字类型的 *** 作数,而运算符使用加号+,此时 JavaScript 会自动将数字转换成字符串console.log(1+'2') //'12'
如果表达式运算符为-、*、/、%中的任意一个,此时 JavaScript 会自动将字符串转换成数字,对无法转换为数字的则转换为 NaN
console.log('20'/ 5) //4
console.log('20'- 25) //-5
console.log('20' * 2) //40
console.log('20' * a) //NAN
console.log("20"%"3") //2
运算符为++或–时,JavaScript 会自动将字符串转换成数字,对无法转换为数字的则转换为 NaN
console.log(++3) //4
console.log(--6) //5
console.log(--a) //NAN
运算符为>或<时,当两个操作数一个为字符串,一个为数字时,JavaScript 会自动将字符串转换成数字。返回布尔值
console.log('10'>6) //true
!运算符将其 *** 作数转换为布尔值并取反
console.log(!0) //true
console.log(!1) //false
console.log(!' ') //true
console.log(!'ok') //false
运算符为==、或===,当表达式同时包含字符串和数字时,JavaScript 会自动将字符串转换成数字,返回布尔值
console.log(2 == '2') //true
console.log(2 === '2') //false
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)