JavaScript的parseInt函数默认基数为8(如果字符串以0开头)会让我很烦恼,这只是因为我继续忘记将可选的第二个参数作为10传递。我正在寻找一个答案,告诉我为什么它会使意味着它默认为8.为什么JavaScript的parseInt的基数默认为8?
回答
如果输入字符串以0开头,它只会“默认”为8,这是来自C和C++的一个不幸遗留。
您可以改为使用Number('0123')
,或者如您在问题中所述,使用parseInt('0123', 10)
。
How do I work around JavaScript's parseInt octal behavior?
你能告诉我更多关于此结转?
如果许多具有0
开始并包含之间(且包括)的数字0至7,则它被解释作为一个八进制数(以8为基数而不是10)。
在parseInt函数然而,如果字符串与0
开始它总是interpeted为八进制,而当它遇到了无效的字符停止搜索(例如数字8
或9
或类似z
的字符)。
parseInt("070"); //56
parseInt("70"); //70
parseInt("070", 10); //70
parseInt("78"); //78
parseInt("078"); //7, because it stops before 8
如果你需要一个字符串转换成一个数字,你确定它不包含无效字符或小数部分,你可以用1乘以它做了一些它:
1 * "070"; //70
我个人比较喜欢这种方法,并且认为它比调用函数更快。
至少在Chrome中,'parseInt'实际上并不那么聪明。 'parseInt('019')'返回'1','parseInt('09')'返回0。 – 2011-04-08 20:24:17
对于那些不明白Matt Ball在说什么的人,提交的第一个答案只包含第一段。 – Lekensteyn 2011-04-08 20:28:35
- 1. 你认为parseInt(“08”)会返回什么?
- 2. 为什么Python 3.2中的print()似乎默认为UTF-8?
- 3. 为什么==和!=默认为ValueType的object.Equals?
- 4. 为什么一切都不默认为UTF-8?
- 5. 为什么不parseInt方法?
- 6. 为什么Rails中的默认编码不是UTF-8?
- 7. 为什么jgit默认
- 8. 为什么不是默认
- 9. 为什么parseInt函数( “08”)= 0,parseInt函数( “07”)= 7
- 10. 为什么非默认参数不能遵循默认参数?
- 11. 在JavaScript:为什么parseInt(“08”)评估为零,但parseInt(08)评估罚款?
- 12. 为什么默认的Spring Security策略是基于AffirmativeBased的?
- 13. SQL:具有“基本为空”默认值的目的是什么?
- 14. @RestController方法默认为Transactional,为什么?
- 15. 为什么grails.views.default.codec默认为“html”?
- 16. 为什么IBAction类型默认为AnyObject?
- 17. 为什么Solr默认多值为真?
- 18. 为什么print-circle默认为零?
- 19. 李为什么默认为换行符?
- 20. 为什么Reduux在Redux中默认称为默认值?
- 21. JavaScript中的parseInt行为
- 22. 为什么parseInt(“123abcd”)和parseInt(“abcd123”)的结果在JavaScript中有所不同?
- 23. iscroll的默认行为是什么。
- 24. performDefaultHandlingForAuthenticationChallenge的默认行为是什么:?
- 25. 为什么要调用默认的aspx?
- 26. 为什么UIBarButtonItem默认是禁用的?
- 27. 为什么'infix`是默认的
- 28. ng-submit的默认行为是什么?
- 29. 的Makefile做:为`默认”做没什么
- 30. mousedown的默认行为是什么?
你能告诉我更多关于这个残留物吗? – 2011-04-08 20:23:41
是的。这是愚蠢的,邪恶的,糟糕的,令人讨厌的 - 一个设计得不好的“功能”,完全是因为以前的语言做到的。 – 2011-04-08 20:26:26
单元'+'是比使用'Number'更好的选择。一元'+'忽略八进制格式(但仍然支持十六进制格式)并且比函数调用更快。 – Reid 2011-04-08 20:55:26