本文介绍了为什么我在 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,您可以忽略基数参数.
Undefined behavior occurs when the string being passed to parseInt has a leading 0, and you leave off the radix parameter.
一个整数,表示上述字符串的基数.始终指定此参数以消除读者混淆并保证可预测的行为.当未指定基数时,不同的实现会产生不同的结果.
有些浏览器默认为 base 8,有些浏览器默认为 base 10.我不确定文档对 Node 的看法,但显然它假设 base 8,因为 base 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 控制台不同的结果)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!