2012-05-01 26 views
21

¿Alguien puede explicar cómo funciona parseInt() y cuál es Radix Parameter?Uso de Javascript parseInt() y un parámetro Radix

Como estudio de caso, que estoy tratando de llegar a enfrentarse con este fragmento de código:

var maxChars = parseInt(formField.attr('maxlength') ? formField.attr('maxlength') : counter.text()); 

Puede también explicar cómo funciona este código? ¿Por qué es formField.attr ('maxlength') allí dos veces? ¡Encuentro que el uso de operadores aquí es bastante confuso!

¿Cómo funciona la Base de parámetros en este ejemplo?

+2

¿Está [el manual] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt) poco claro? – Quentin

+4

No se especificó _ radix en este ejemplo ... Toda la expresión dentro de 'parseInt()' es una instrucción ternaria que devuelve la longitud máxima si se especifica o 'counter.text()' si no lo es. –

+1

Al final, todo lo que obtiene de esto es 'parseInt (formField.attr ('maxlength'))' OR 'parseInt (counter.text())' –

Respuesta

36

El radix es otro nombre para base, es decir, 2 para binario, 10 para decimal, 16 para hexadecimal, explicado con más detalle en Mozilla Developer Network site.

En su ejemplo no hay ningún parámetro radix, por lo que el intérprete volverá a caer al comportamiento predeterminado, que normalmente trata con números decimales, a menos que comiencen con un (octal) cero o 0x (hexadecimal).

+10

Me alegro de que alguien haya respondido la pregunta aquí. ¿Desde cuándo tienes que comenzar con el manual? Dame un descanso, la pregunta era válida y no debería haber sido votado. –

+4

Firefox, Chrome e IE 9+ tratan 'parseInt (" 077 ")' como 'parseInt (" 077 ", 10)'. IE8 y abajo lo trata como 'parseInt (" 077 ", 8)' Es por eso que siempre debe especificar el radix. –

+2

@JuanMendes Creo que ES5 desactivó el comportamiento original de incumplimiento a octal para un cero inicial. – Alnitak

2

En el Script ECMA 5 cuando la cadena comienza con 0 y sin raíz se especifica el comportamiento predeterminado es decimal (en contraposición a las versiones anteriores en las cuales es octal)

Fuente: parseInt() on Mozilla Developer Network

0

parseInt toma dos parámetros, el segundo es opcional. Cadena y Radix.

cadena es el valor de analizar. Si el valor proporcionado no es una cadena, lo convertirá en una cadena.

Radix es un número entero entre 2 y 36 que representa el radix (la base en sistemas de numeración matemática) de la cadena mencionada.

En el fragmento de código de la Radix no se especifica y se supone que es por defecto 16.

var maxChars = parseInt(formField.attr('maxlength') ? formField.attr('maxlength') : counter.text()); 

está definiendo una variable llamada "maxChars". Esta variable es igual a la evaluación de una declaración FI de mano corta.

que está recibiendo el atributo de la variable que se espera que sea un selector "FormField" llamada "maxLength". El valor retornará como un entero, retrocederá en su raíz por defecto.

La sentencia if comprueba si el valor devuelto es verdadera o falsa. 0, falso, ectcetera daría como resultado que el valor de la variable "maxChars" se establezca en texto combinado "contadores". Si es verdadero, la variable se establecerá como el atributo selector "formField" llamado "maxLength".

formField.attr('maxlength') 

¿Hay dos veces porque se emplea en una evaluación instrucción IF y el otro se utiliza como valor si la condición en los resultados de la instrucción IF como TRUE.

+0

un poco tarde, pero no se especifica Radix, pero no siempre es el valor predeterminado 16 y esta frase es incorrecta debido a esa segunda mitad. depende del navegador y de la cadena real que se transfiere. Y también, dado que ES5 (como se indica en los comentarios en la respuesta aceptada), por lo general, es decimal/10 – Daemedeor