最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • JS之数据类型强制转换

    正文概述 掘金(心如止水_自在如风)   2021-06-22   605

    这是我参与更文挑战的第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"
    

    起源地下载网 » JS之数据类型强制转换

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元