好吧,我在和parseInt打交道,看看它如何处理尚未初始化的值,我偶然发现了这个Ruby .以下情况适用于任何基数为24或以上的情况.

parseInt(null, 24) === 23 // evaluates to true

我在IE、Chrome和Firefox中测试了它,它们都是真的,所以我想它一定在某个地方的规范中.快速的谷歌搜索没有给我任何结果,所以我在这里,希望有人能解释.

我记得听过一次Crockford的演讲,他说typeof null === "object"是因为一个疏忽导致Object和Null在内存中有一个几乎相同的类型标识符或类似的东西,但我现在找不到那个视频.

试试看:http://jsfiddle.net/robert/txjwP/

Edit Correction: a higher radix returns different results, 32 returns 785077
Edit 2 From zzzzBov: [24...30]:23, 31:714695, 32:785077, 33:859935, 34:939407, 35:1023631, 36:1112745


tl;dr

解释为什么parseInt(null, 24) === 23是正确的陈述.

推荐答案

它将null转换为字符串"null",并试图将其转换.对于半径0到23,它无法转换数字,因此返回NaN.在24,第14个字母"n"被添加到数字系统中.在31处,添加第21个字母"u",整个字符串可以解码.在上的37,不再有任何可以生成的有效数字集,返回NaN.

js> parseInt(null, 36)
1112745

>>> reduce(lambda x, y: x * 36 + y, [(string.digits + string.lowercase).index(x) for x in 'null'])
1112745

Javascript相关问答推荐

功能和普通对象之间的原型污染

在JS中获取名字和姓氏的首字母

如何将拖放功能添加到我已自定义为图像的文件输入HTML标签中?

如何修复(或忽略)HTML模板中的TypeScript错误?'

将本机导航路由react 到导航栏中未列出的屏幕?

如何在 cypress 中使用静态嵌套循环

使用JQuery单击元素从新弹出窗口获取值

如何使onPaste事件与可拖动的HTML元素一起工作?

变量的值在Reaction组件中的Try-Catch语句之外丢失

我可以使用使用node.js创建的本地主机来存储我网站上提交的所有数据吗?没有SQL或任何数据库.只有HTML语言

环境值在.js文件/Next.js中不起作用

查询参数中的JAVASCRIPT/REACT中的括号

使用NextJS+MongoDB+Prisma ORM获取无效请求正文,无法发布错误

如何 for each 输入动态设置输入变更值

Vaadin定制组件-保持对javascrip变量的访问

以编程方式聚焦的链接将被聚焦,但样式不适用

面对代码中的错误作为前端与后端的集成

try 将Redux工具包与MUI ToggleButtonGroup组件一起使用时出错

无法读取未定义的属性(正在读取合并)-react RTK

如何阻止外部脚本进入顶层导航