当前位置: 首页 > 知识库问答 >
问题:

为什么parseInt()不能将“true”转换为数字,而乘法可以?[副本]

李昱
2023-03-14

我从返回true表达式开始(我选择1==1)并在控制台中编写

cosole.log(1==1);

它记录< code>true。现在我想将它转换成整数(< code>1)并将其包装在< code>parseInt()中

console.log(parseInt(1==1));

它记录 NaN。看起来它正在尝试在将其转换为数字之前将 1==1 转换为字符串。然后我简单地将 1==1 乘以 1。

console.log((1==1)*1);

它记录1

为什么在第一种情况下,它会将true转换为字符串,然后再将其转换为整数(结果是NaN),而我想将其转换成字符串,而在第二种情况下它会将true直接转换为整数?我希望true*1也将是NaN

共有2个答案

商璞
2023-03-14
parseInt(bool) == NaN
parseInt(bool*1) == parseInt(int) == int

我相信Javascript在相乘时会使true=1false=0

编辑:为了进一步实现这一点,parseInt(bool*bool)也可以工作

曹镜
2023-03-14

< code>parseInt作为一个“解析”r,应该接受一个字符串并生成一个整数,因此它将其参数转换为一个字符串。< code>*,因为它是乘法,所以将其参数转换为数字。

如果要将任何内容转换为(32位)整数,|0有效;这是一个32位按位整数操作,不能导致NaN,因为那不是32位整数。

只是为了强调parseInt是一种完全不合适的将字符串以外的任何东西转换为整数的方式:这给了你什么?

parseInt(5000000000000000000000000)

(对于较大的数字,请使用Math.round(x)Math。round(x)(如果您希望显式)

 类似资料: