Javascript parseInt(';1e1';)与parseFloat(';1e1';)

Javascript parseInt(';1e1';)与parseFloat(';1e1';),javascript,parseint,parsefloat,Javascript,Parseint,Parsefloat,为什么parseInt在第二种情况下返回1?三个不应该返回相同的结果 1e1是计算结果为10的数字文字parseInt()看到10并愉快地返回它 '1e1'是一个字符串,parseInt()不识别指数符号,因此它在第一个字母处停止 '1e1'当解析为浮点时,作为字符串是完全正确的 奖金:parseInt('1e1',16)返回481,将其解析为3位十六进制数。当您试图解析字符串时,只返回字符串中的第一个数字。检查以下位置的功能规格: 此外,您还可以自己进行测试: parseInt('2e1')-

为什么parseInt在第二种情况下返回1?三个不应该返回相同的结果

  • 1e1
    是计算结果为
    10
    的数字文字
    parseInt()
    看到
    10
    并愉快地返回它
  • '1e1'
    是一个字符串,
    parseInt()
    不识别指数符号,因此它在第一个字母处停止
  • '1e1'
    当解析为浮点时,作为字符串是完全正确的

  • 奖金
    parseInt('1e1',16)
    返回
    481
    ,将其解析为3位十六进制数。

    当您试图解析字符串时,只返回字符串中的第一个数字。检查以下位置的功能规格:

    此外,您还可以自己进行测试:
    parseInt('2e1')
    -返回
    2

    parseInt('3e2')
    -返回
    3

    要了解差异,我们必须阅读ecma官方文档以了解和

    parseInt只能将字符串的前导部分解释为整数值;它忽略任何不能被解释为整数表示法一部分的字符,并且没有给出忽略任何此类字符的指示

    parseFloat只能将字符串的前导部分解释为数值;它忽略任何不能被解释为十进制文字符号的一部分的字符,,并且没有给出任何此类字符被忽略的指示

    parseInt只需要一个整数值(1、10、28等),但parseFloat需要一个数字。因此,字符串
    “1e1”
    将自动转换为parseFloat中的数字

    parseInt(1e1); //10
    parseInt('1e1'); //1
    parserFloat('1e1') //10
    

    1e1不是有效的int。我猜它会丢弃e1。如果您解析int(string),它将只读取字符串的第一个数字部分,其余部分将被丢弃。不建议使用W3。为什么,@djechlin?好的,已经理解为什么:
    parseInt('1e1'); // 1
    
    parseFloat('1e1'); // 10