Sv Community El Salvador

Soporte y Tecnología => Programación => Scripts => Mensaje iniciado por: llAudioslavell en febrero 26, 2012, 10:51:51 pm

Título: JavaScript, duda con prompt
Publicado por: llAudioslavell en febrero 26, 2012, 10:51:51 pm
Hola a todos ^^ "

Hoy empeze a iniciarme con JavaScript, estoy leendo tutoriales y pues empeze a resolver algunos Algoritmos sencillisimos, pero me surgio un problemita... 

      var sN;
      var s = prompt("Ingrese su sueldo: ","");
      sN = s + 1

este no es el algoritmo que estoy resolviendo xD, lo digo porsiacaso :D ,  ..  solo lo hize como muestra..
al realizar esto "s + 1" lo que hace es concatenar los valores, mas no sumarlos :S .. se que en JS el signo "+" sirve para concatenar cadenas  mas no numeros, la variable "s" contendra un valor numerico que sera ingresado... creo que es por estas comillas, prompt("Ingrese su sueldo: ",""); ,  lo que lo convierte a cadena ?? 
Título: Re: JavaScript, duda con prompt
Publicado por: llAudioslavell en febrero 26, 2012, 11:09:14 pm
Hola a todos ^^ "

Hoy empeze a iniciarme con JavaScript, estoy leendo tutoriales y pues empeze a resolver algunos Algoritmos sencillisimos, pero me surgio un problemita... 

      var sN;
      var s = prompt("Ingrese su sueldo: ","");
      sN = s + 1

este no es el algoritmo que estoy resolviendo xD, lo digo porsiacaso :D ,  ..  solo lo hize como muestra..
al realizar esto "s + 1" lo que hace es concatenar los valores, mas no sumarlos :S .. se que en JS el signo "+" sirve para concatenar cadenas  mas no numeros, la variable "s" contendra un valor numerico que sera ingresado... creo que es por estas comillas, prompt("Ingrese su sueldo: ",""); ,  lo que lo convierte a cadena ??

Ya lo encontre.... parseInt(s) es como si dijera  Val(txtNumero.text) en VisualBasic.net ... disculpen  por esta pregunta .. !
Título: Re: JavaScript, duda con prompt
Publicado por: JaiMe en febrero 27, 2012, 12:18:41 am
Que bien que lo solucionaste, solo recomiendo que siempre que uses parseInt pases el radix, por ejemplo si queres el sueldo base 10 usa

parseInt(s, 10);

hace dias respondi algo similar http://www.svcommunity.org/forum/programacioacuten/ayuda-javascript!/ (http://www.svcommunity.org/forum/programacioacuten/ayuda-javascript!/)
Título: Re: JavaScript, duda con prompt
Publicado por: stoke en febrero 27, 2012, 12:52:36 am
Investiga sobre la funcion isNaN, valida si es una expresion numerica, hay otra forma de convertir un texto en cadena, con el parseInt, te devuelve un entero(sin decimales), lo podes hacer utilizando la clase Number, de esta forma

var numero = new Number(expresion);

Suerte!
Título: Re: JavaScript, duda con prompt
Publicado por: JaiMe en febrero 27, 2012, 01:40:07 am
isNaN es aceptable para evaluar si una expresion es candidata para ser convertida a un numero.

Pero, nunca uses el constructor number, es considerado un antipattern. hay dos razones, el constructor es mas lento que parseInt y regresa un objeto de tipo Object.

Ejemplo

Código: [Seleccionar]
typeof 10;                   // 'number'
typeof parseInt('10', 10);   // 'number'
typeof new Number('10');     // 'object'  <- Object no me dice nada valioso

* typeof no es libre de defectos...

Expandiendo un poco, sobre el operador +

El operador + usualmente convierte numeros a cadenas cuando uno de los operandos es una cadena de texto y los concatena

Código: [Seleccionar]
2 + '10'        // '210'
'2' + 10        // '210'
2 + 2 + '10'    // '410'
2 + '2' + '10'  // '2210'


Pero tambien puede ser usado para convertir cadenas a numeros

Código: [Seleccionar]
+'10'      // regresa el numero 10
consequentemente podes hacer esto

Código: [Seleccionar]
2 + +'10'         // 12
+'2' + 10         // 12
2 + 2 + +'10'     // 14
2 + +'2' + +'10'  // 14

En términos técnicos el operador + hace type cohersion, es decir que intentara cambiar el operando a un tipo numerico cuando se utiliza de esta manera.
 
Si, JavaScript es f*cking raro y no recomiendo escribir codigo asi para cosas serias. Quedate con parseInt.
Título: Re: JavaScript, duda con prompt
Publicado por: llAudioslavell en febrero 27, 2012, 08:50:53 am
waoo !! se ve  que me tomara un buen tiempo aprender este lenguaje de programacion ... Gracias a todos ^^  seguire practicando !!