我有一个恼人的问题.

> parseInt(1 / 0, 19)
> 18

为什么parseInt函数返回18

推荐答案

1/0的结果是Infinity.

parseInt将其第一个参数视为字符串,这意味着首先调用Infinity.toString(),生成字符串"Infinity".因此,它的工作原理与你要求它将以19为基数的"Infinity"转换成十进制是一样的.

以下是以19为基数的数字及其十进制值:

Base 19   Base 10 (decimal)
---------------------------
   0            0
   1            1
   2            2
   3            3
   4            4
   5            5
   6            6
   7            7
   8            8
   9            9
   a            10
   b            11
   c            12
   d            13
   e            14
   f            15
   g            16
   h            17
   i            18

接下来发生的事情是,parseInt扫描输入"Infinity"以找到它的哪一部分可以被解析,并在接受第一个I后停止(因为n在基数19中不是有效数字).

因此,它的行为就好像你调用了parseInt("I", 19),它通过上表转换为十进制18.

Javascript相关问答推荐

响应式JS DataTable中的Bootstrap 5弹出程序无法正常工作

react 页面更改类别时如何返回第0页

在JavaScript中,是否有一种方法可以创建自定义thable,在等待某些代码后自动触发它?

是什么原因导致此Angular 16电影应用程序中因类型错误而不存在属性?

有条件的悲剧

使用续集和下拉栏显示模型属性

JQuery. show()工作,但. hide()不工作

如何使覆盖div与可水平滚动的父div相关?

将旋转的矩形zoom 到覆盖它所需的最小尺寸&S容器

如何从URL获取令牌?

使用Google API无法进行Web抓取

在forEach循环中获取目标而不是父对象的属性

如何在Svelte中从一个codec函数中调用error()?

变量在导入到Vite中的另一个js文件时成为常量.

TinyMCE 6导致Data:Image对象通过提供的脚本过度上载

当我try 将值更改为True时,按钮不会锁定

如何防止ionic 输入中的特殊字符.?

FileReader()不能处理Firefox和GiB文件

重新呈现-react -筛选数据过多

在高位图中显示每个y轴系列的多个值