javascript - lista - etiquetas basicas de java script
Pasar el valor octal a la nueva función numérica (3)
He hecho algo como:
Number.prototype.foo = function () {
//code
}
// Octal number!
(013).foo();
Pero inspeccionando esto dentro de la función foo, obtengo 11 como valor ... ¿Qué pasa?
Esto no es realmente un problema, ya que puede convertirlo fácilmente a una representación octal:
var dec = 11;
alert(dec.toString(8)); // returns "13"
Los números se devuelven en formato decimal, pero las operaciones numéricas en él no serán diferentes, hasta donde yo sé. Tenga en cuenta también que todos los números octales proporcionados a JavaScript se "convertirán" inmediatamente de esta manera:
alert(013); // returns 11
Qué esperabas que sucediera?
Javascript trata a todos los números enteros que comienzan con un cero como octal [*], por lo que el valor real de 013
es de hecho 11
(decimal). La clase Number
solo trata de valores, y no sabrá que pasaste originalmente en una constante octal.
[*] Existe una excepción para los números enteros que contienen los dígitos 8 o 9, dado que no son legales en octal, el analizador los tratará implícitamente como decimal incluso en presencia de un cero inicial.
Un número octal no es diferente de un número decimal una vez que ha sido interpretado como un número.
013
es exactamente lo mismo que 11
. Una vez que JavaScript ve que es un número, es solo un número; no recuerda su "octalness" o "decimalness".