我从表达式返回true(我选择1==1)开始并在控制台中编写它
cosole.log(1==1);
Run Code Online (Sandbox Code Playgroud)
它记录true。现在我想将其转换为整数 ( 1) 并将其包装在parseInt()
console.log(parseInt(1==1));
Run Code Online (Sandbox Code Playgroud)
它记录NaN。看起来它在将1==1其转换为数字之前试图转换为字符串。然后我将简单地乘以1==11。
console.log((1==1)*1);
Run Code Online (Sandbox Code Playgroud)
它记录1。
为什么在第一种情况下它在将其转换true为整数(结果NaN)之前将其转换为字符串,而我想将其转换为字符串,而在第二种情况下它true直接转换为整数?我期望true*1会NaN了。
parseInt,由于是“解析”r,应该接受一个字符串并生成一个整数,因此它将其参数转换为字符串。*,因为它是乘法,将其参数转换为数字。
如果您想将任何内容转换为(32 位)整数,则| 0可以;这是一个 32 位按位整数运算,不能导致NaN,因为那不是一个 32 位整数。
只是强调parseInt一下,将字符串以外的任何内容转换为整数是一种完全不合适的方式:这会给您带来什么?
parseInt(5000000000000000000000000)
Run Code Online (Sandbox Code Playgroud)
(对于这么大的数字,请使用Math.round(x),或者Math.round(+x)如果您想明确表示。)
parseInt(bool) == NaN
parseInt(bool*1) == parseInt(int) == int
Run Code Online (Sandbox Code Playgroud)
我相信,JavaScript却使true = 1并且false = 0当你乘它。
编辑:为了进一步实现这一点,parseInt(bool*bool)也可以
| 归档时间: |
|
| 查看次数: |
3305 次 |
| 最近记录: |