这是我参与更文挑战的第21天,活动详情查看: 更文挑战
强制类型转换
强制类型转换方式包括Number()
、parseInt()
、parseFloat()
、toString()
、String()
、Boolean()
,这些方法都比较相似,就是通过自身的方法来进行数据类型的强制转换。
Number()强制转换
- 布尔值,true转换为1,false转换为0
- 数字返回自身。
- null返回0
- undefined返回NaN
- 如果是字符串
- 如果字符串中只包含数字(或是0x/0X开头数字可以有正负)将其转换为十进制
- 如果字符串中包含有效的浮点格式,转化为浮点数
- 如果是空字符串,转换为0
- 如果不是以上的,返回NaN
- 如果是Symbol,抛出错误
- 如果是对象,并且部署了[Symbol.toPrimitive],调用对象的valueOf()方法,然后根据前面的规则转换返回的值,如果转换的结果是NaN,那么调用对象的toString方法,再次按前面的顺序返回对应的值。
Number(true); // 1
Number(false); // 0
Number('0111'); //111
Number(null); //0
Number(''); //0
Number('1a'); //NaN
Number(-0X11); //-17
Number('0X11') //17
Boolean()方法的强制转换规则
undefined, null, false, '', 0(+0,-0), NaN转换的是false,其他转换的都是true。
Boolean(0) //false
Boolean(null) //false
Boolean(undefined) //false
Boolean(NaN) //false
Boolean(1) //true
Boolean(13) //true
Boolean('a') //true
parseInt()
直接转换
parseInt("1234blue"); //returns 1234
parseInt("0xA"); //returns 10
parseInt("22.5"); //returns 22
parseInt("blue"); //returns NaN
根据进制转换
parseInt("AF", 16); //returns 175
parseInt("10", 2); //returns 2
parseInt("10", 8); //returns 8
parseInt("10", 10); //returns 10
parseFloat()
跟parseInt()基本一样,不过是转换浮点数,但是没有进制转换的功能
parseFloat("1234blue"); //returns 1234.0
parseFloat("0xA"); //returns NaN
parseFloat("22.5"); //returns 22.5
parseFloat("22.34.5"); //returns 22.34
parseFloat("0908"); //returns 908
parseFloat("blue"); //returns NaN
toString()
对于原始类型,null转化成"null" , undefined转换成 “undefined”, true转换成“true”, false转化成“false”, 数字除了极大和极小的数字采用指数形式。
var a = 1.07*1000*1000*1000*1000*1000*1000*1000
a.toString() //"1.07e21"
var b = 15
b.toString() //"15"
对普通对象来说,除非自行定义,否则toString()返回内部属性[[Class]]的值,如"[object Object]"
let a = {
name:"a"
}
a.toString() //"[object Object]"
数组对象重写了toString方法,把每个位置的都转换成字符串然后用,
拼接
var a = [1,2,3]
a.toString() //1,2,3
String()
和toString()的转换基本上是一样的,只不过toString没办法直接转换原始类型,只能转换经过js包装的对象。
11.toString() //报错
String(11) //"11"
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!