我做了类似的事情:
Number.prototype.foo = function () {
//code
}
// Octal number!
(013).foo();
但是检查脚部功能的内部,我得到了11值......出了什么问题?
答案 0 :(得分:1)
您期望发生什么?
Javascript将以零开头的所有整数视为八进制[*],因此013
的实际值确实为11
(十进制)。 Number
类只处理值,并且不会知道您最初传递的是八进制常量。
[*]包含数字8或9的整数有一个例外 - 因为那些在八进制中是不合法的,即使存在前导零,解析器也会隐含地将它们视为十进制。
答案 1 :(得分:0)
一旦将八进制数解释为数字,八进制数与十进制数没有区别。
013
与11
完全相同。一旦JavaScript看到它是一个数字,它只是一个数字 - 它不记得它的“八进制”或“十进制”。
答案 2 :(得分:0)
这不是一个真正的问题,因为您可以轻松地将其转换回八进制表示:
var dec = 11;
alert(dec.toString(8)); // returns "13"
数字以十进制格式返回,但就我所知,它上面的数字操作不会有任何不同。另请注意,提供给JavaScript的所有八进制数将立即以这种方式“转换”:
alert(013); // returns 11