Why am I getting weird result using parseInt in node.js? (different result from chrome js console)(为什么我在 node.js 中使用 parseInt 会得到奇怪的结果?(与 chrome js 控制台的结果不同))
问题描述
我刚刚注意到:
//IN CHROME JS CONSOLE
parseInt("03010123"); //prints: 3010123
//IN NODE.JS
parseInt("03010123"); //prints: 790611
既然都是基于V8,为什么同样的操作会产生不同的结果???
Since both are based on V8, why same operation yielding different results???
推荐答案
将字符串传递给 parseInt 有一个前导 0,并且您省略了 radix 参数.
Undefined behavior occurs when the string being passed to parseInt has a leading 0, and you leave off the radix parameter.
一个整数,表示上述字符串的基数.始终指定此参数以消除读者混淆并保证可预测的行为.当未指定基数时,不同的实现会产生不同的结果.
An integer that represents the radix of the above mentioned string. Always specify this parameter to eliminate reader confusion and to guarantee predictable behavior. Different implementations produce different results when a radix is not specified.
有些浏览器默认以 8 为基数,有些以 10 为基数.我不确定文档对 Node 的看法,但显然它假设以 8 为基数,因为以 8 为基数的 3010123
是 790611
以 10 为底.
Some browsers default to base 8, and some to base 10. I'm not sure what the docs say about Node, but clearly it's assuming base 8, since 3010123
in base 8 is 790611
in base 10.
你会想要使用:
parseInt("03010123", 10);
这篇关于为什么我在 node.js 中使用 parseInt 会得到奇怪的结果?(与 chrome js 控制台的结果不同)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么我在 node.js 中使用 parseInt 会得到奇怪的结果?(与 chrome js 控制台的结果不同)
基础教程推荐
- 我什么时候应该在导入时使用方括号 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 动态更新多个选择框 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01