javascript - 为什么 parseInt() 不将 "true"转换为数字,而乘法呢?

标签 javascript

<分区>

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

cosole.log(1==1);

它记录 true。现在我想将它转换为整数 (1) 并将其包装在 parseInt()

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

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

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

它记录 1

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

最佳答案

parseInt,由于是一个“parse”r,应该接受一个字符串并产生一个整数,所以它将它的参数转换为一个字符串。 *,因为它是乘法,将其参数转换为数字。

如果您想将任何 转换为(32 位)整数,| 0 有效;这是一个 32 位按位整数运算,不会产生 NaN,因为那不是 32 位整数。

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

parseInt(5000000000000000000000000)

(对于那么大的数字,请使用 Math.round(x),或者如果您想明确一点,请使用 Math.round(+x)。)

关于javascript - 为什么 parseInt() 不将 "true"转换为数字,而乘法呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24576189/

相关文章:

javascript - 如何在 javascript 中使用大写函数映射数组?

javascript - 具有缩放和滑动器的 React-Native 图像查看器

javascript - 递归地分割包含html元素的字符串并在javascript中获取特定值

javascript - 更新带有附件的列表项时出现冲突问题

javascript - 在javascript ES6中寻找更高效的排序算法

javascript - 在javascript中将多行数字字符串转换为双数组

javascript - Scope.attribute 可用但 scope.attribute.variable 在指令中未定义

javascript - 使用 anchor 作为 javascript 操作,链接应该是什么?

javascript - 将 AutobahnJS (WebSockets) 与 Backbone 解耦

javascript - 按列jquery对表格进行排序