Skip to content

Number 和 parseInt 转化数值有何不同? #33

Description

@fwon

parseInt 为解析函数,传递的参数需为字符串,非字符串参数会首先被强制类型转换为字符串。解析按照从左到右的顺序,如果遇到非数字字符就停止。

Number为转换函数,不允许出现非数字字符,否则会失败并返回NaN,具体的转化规则请参考其他问题中的分析。

var a = "42";
var b = "42px";

Number(a); //42
parseInt(b); //42

Number(b); //NaN
parseInt(b); //42

关于parseInt一些看似诡异的问题,只要明白参数会被转化为字符串再进行解析,就不会觉得奇怪了,试试看能不能理解下面这些运算的返回值。

parseInt(0.000008);  //0
parseInt(0.0000008); //8
parseInt(false, 16); //250
parseInt(parseInt, 16); //15
parseInt("0x10"); //16
parseInt("103", 2); //2

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions