• js数值转换


      先来几个题吧:

    var num1 = Number("123blue");
    var num2 = Number("");
    var num3 = Number([]);
    var num4 = Number(true);
    var num5 = Number(null);
    var num6 = Number(undefined);
    var num7 = Number("010");
    答案:
    num1=NaN, num2=0, num3=0, num4=1, num5=0, num6=NaN, num7=10

    var num8 = parseInt("010");
    var num9 = parseFloat("010");
    var num10 = parseInt("123blue");
    var num11 = parseInt("");
    var num12 = parseInt("22.5");
    var num13 = parseFloat("22.0");
    var num14 = parseFloat("0xA");
    答案:
    num8=10(ie8下=8), num9=10, num10=123, num11=NaN, num12=22, num13=22, num14=0
    都答对的亲呢就略过本文吧,其他亲们继续往下看

    js数值转换有4种方法:Number(), parseInt(), parseFloat(), 和一元操作符“+”。其中“+”和Number()的转换规则一样。
    Number()可用于转换任何数据类型,转换的规则如下:

      

     parseInt()和parseFloat()用于转换字符串,Number()转换字符串过于复杂,parseInt()则相对简单,更适用于字符串的转换。parseInt()有以下几点规则:

         1.解析时先查找第一个非空格字符,如果不是数字或+ -,返回NaN,如果是数字,则继续第二个字符,直到解析完所有字符或遇到一个非数字字符。如

       2.会把“0x”开头且后跟数字的当作十六进制解析; “0”开头且后跟数字的,在ECMAScript 3 中当作八进制,ECMAScript5忽略前导0当作十进制解析.(所以上题中的num8在ie8-下等于8,而在其他现代浏览器中是10)

         3.接收第二个参数,指定使用多少进制。如果是指定了十六进制则字符串可以不带前面的“0x”。如parseInt("A", 16)=16,parseInt("A")=NaN.
     
     
     parseFloat()和parseInt( )类似,除了下面两点:

           1.允许有一位小数点“.”,即解析有效的浮点数。

           2.忽略前导0始终按十进制解析,并且十六进制格式的字符串会被转换成0.

       字符串如果包含的是整数或者小数点后是0,parseFloat( )返回整数。


  • 相关阅读:
    nginx中目录转义字符问题
    2022年3月2日最近的状态~
    [esp8266]官方SDK与arduino ROM或Flash布局,Vscode+platformio 如何设置
    什么是并发容器
    Executor, ExecutorService 和 Executors区别与联系
    Spirng和SpringBoot中的Aop优先使用的是JDK动态代理还是Cglib
    建造者模式
    MySQL四大排名函数
    SpringMVC执行流程解析(PS:使用了适配器模式)
    适配器模式
  • 原文地址:https://www.cnblogs.com/pandabunny/p/3517890.html
Copyright © 2020-2023  润新知