La sintaxis de JavaScript es como la de Java y, por tanto, muy parecida a la de C++. Las instrucciones terminan con un punto y coma y se agrupan mediante llaves; una doble barra (//) indica que el resto de la línea es un comentario. Lo operadores matemáticos también son los mismos: + (que también sirve para cadenas), -, *, /, % (módulo), ++ y --.
Las asignaciones (=) son también como en C y C++, incluyendo +=, -=, *=, /= y %=. En cuanto a los operadores lógicos tenemos ||, &&, !, ^ (xor), << y >> y las comparaciones son (aparte de odiosas :-) ) <, >, <=, >=, = = y !=. Todo como en C.
function Sintaxis() { // Comienza una agrupación de instrucciones numero=1; // numero vale 1 numero++; // incrementamos numero y ahora vale 2 numero-=3; // restamos 3 a numero y ahora vale -1 nuevo_numero=numero++; // asignamos -1 a nuevo_num e incrementamos numero, // que ahora es 0 nuevo_numero=++numero; // incrementamos numero (total: 1) y asignamos su // valor a nuevo_numero } //Termina la agrupación (función)
var SoyUnaVariable; SoyUnaVariable=2;declararía una variable de un tipo entero. También se pueden crear objetos de la siguiente manera:
var MiPrimerObjeto = new Object(); MiPrimerObjeto.Colonia = "Chispas"; MiPrimerObjeto.TutorDeJavaScript = "Multivac, el grande";También, y como caso particular de objeto, podemos declarar arrays:
var UnArray = new Array(); UnArray[1]="Soy el primero, que passsa"; UnArray[2]="Los últimos serán los primeros";
if (numero==1) { numero++; numero+=2; } else numero--;Una estructura similar y muy típica en C es la siguiente:
numero = (valor>=4) ? 3 : valor;que, dependiendo del resultado de la condición expresada entre el = y la ? nos permite dar a la variable numero un 3 si la condición resultase verdadera y valor si resultara ser falsa. La estructura switch nos permite bifurcar dependiendo del valor de una variable (que en el ejemplo sería numero):
switch (numero) { case 1: // si la variable es 1 alert('Adios'); break; // si no ponemos break, ejecutaría // alert('Hola') y todas las // instrucciones hasta encontrar un // break o el final del switch case 2: alert('Hola'); break; default: // si no es ninguno de los anteriores alert('No te entiendo'); }Para hacer bucles podremos utilizar las siguientes estructuras: for, for in, while y do/while. La estructura for(inicio;final;incremento) nos permite ejecutar el contenido del bucle mientras la condición de final no se cumpla. Al comenzar la ejecucuón del bucle se ejecutará la sentencia inicio y en cada iteración incremento. La manera más habitual de usar estas posibilidades es la siguiente:
var factorial=1; for (n=2;n<=numero;n++) factorial+=factorial*n;La estructura for...in es una novedad incluida en JavaScript y nos sirve para recorrer todos los elementos de un array:
for (contador in UnArray) { UnArray[contador]="No seais tan chulos" };Por último, las estructuras while y do/while nos permiten recorrer un bucle mientras se cumpla una condición. La diferencia entre ellas es que la primera comprueba dicha condición antes de realizar una iteración y la segunda lo hace después:
var numero=0; while (numero==1) { alert('Soy un while'); } do { alert('Soy un do/while'); } while (numero==1);En este caso solo veríamos aparecer un ventana diciendo que es un do/while. La razón es evidente. El while comprueba primero si numero es igual a 1 y, como no lo es, no ejecutaría el código que tiene dentro del bucle. En cambio, el do/while primero ejecuta el bucle y luego, viendo que la condición es falsa, saldría.
Los punteros se pueden usar para apuntar a otras variables, es decir, un puntero puede ser como un nuevo nombre de una variable dada. A esto se le suele llamar referencia. En JavaScript se pueden usar referencias a objetos y a funciones. Su mayor utilidad está en el uso de distinto código para distintos navegadores de forma transparente. Por ejemplo, supongamos que tenemos una función que sólo funciona en Internet Explorer 4, y tenemos una variable IE4 que hemos puesto a verdadero sólo si el explorador del usuario es ese.
function funcionIE4() {...} function funcionNormal() {...} var funcion = (IE4) ? funcionIE4 : funcionNormal; // Si IE4 es verdadero, funcion es una referencia de funcionIE4 // Si no, funcion es una referencia de funcionNormal funcion(); // La llamada que haremos realmente depende de la // línea anteriorEn este código, cuando llamemos a funcion al final en realidad llamaremos a la función a la que en la línea anterior hemos decidido que se refiera. No te preocupes mucho si no lo entiendes, casi no lo usamos en este curso, aunque en el de HTML dinámico si lo usaremos más exhaustivamente.