Los lenguajes tradicionales (como el C) usan sólo variables que hayan
sido previamente declaradas para:
- optimizar el uso de la memoria;
- aumentar la fiabilidad.
Javascript, sin embargo utiliza un control de tipo laxo por lo que no
existe una sección de declaración de variables ni es tampoco necesario
declararlas:automáticamente se asigna el tipo en base a la declaración.
Por ejemplo Prueba="texto" y Prueba=59 son
dos declaraciones totalmente válidas, pero en el primer caso Prueba
es considerada objeto string, mientras que en el segundo la misma es
considerada como valor numérico.
Si se concatenan valores diversos, prevalece el valor string, por lo que un
número concatenado con una cadena produce una cadena. Ahora bien, si la cadena
es un número, el resultado será un número (p.ej., timval=365+"10"
dará; 375).
A veces, sin embargo, este control no es preciso (por ejemplo, cuando se
multiplica una variable cadena por un número) y ya que no existe un compilador
para controlar los errores, el script no genera los resultados deseados. En
este caso, más que declarar basta convertir el resultado con una función de
conversión.
Para convertir los valores basta utilizar:
- las comillas, para convertir un valor numérico en cadena o la suma de un
número con un espacio;
- método String() (desde Javascript 1.2) para convertir en
cadena o con el constructor String() (p.ej., micadena=String(num));
- las funciones eval(), parseInt() y parseFloat()
para convertir un valor cadena en numérico;
- los valores lógicos se obtienen de valores numéricos o cadena igualándolos
a true o false.
Las funciones eval(), parseInt() y parseFloat()funcionan
como sigue:
- parseInt busca un entero al inicio de una cadena, descartando
las cadenas, y lo visualiza ignorando las partes decimales y la eventual coma
(p.ej., parseInt("39 grados")=39). Un segundo parámetor, facultativo,
es la base numérica (p.ej., parseInt(text,16) para buscar números hexadecimales);
- parseFloat opera de la misma manera, pero conserva la eventual
coma presente y el signo.
La función eval es bastante compleja y busca cualquier
expresión Javascript válida para transformarla en número. En Netscape 2.0,
sin ambargo, provoca caídas imprevistas:
x=10; y=20; z=30; eval("x+y+z+900")=960
De todas formas, en cualquier momento, se puede verificar
el tipo de la variable mediante el operador typeof (p.ej.,
typeof 69 restituye "number"), el cual ha sido introducido con
con Javascript 1.1. Los valores restituidos son: string, boolean, number, function.
Supongamos, por ejemplo, que tenemos las siguientes variables:
var prueba=new Function()
var número=1
var carácter="Hola"
Pulsar los botones para verificar el tipo
con el operador typeof se tendrá
typeof prueba restituirá object
typeof número restituirá number
typeof carácter restituirá string