Este capítulo es una pequeña introducción a la sintaxis del lenguaje. Asumo que sabes programar y voy rápido, así que si te pierdes un poco es mejor que visites esta otra explicación del lenguaje algo más amplia que he escrito para el curso de DHTML de HTML en castellano.

    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)


    Si la declaración de una variable se hace dentro de una función, dicha variable es local, en caso contrario es global. En JavaScript no se asigna en la declaración el tipo de la variable sino que el intérprete se encarga de ello. Por ejemplo,
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";


    Vamos a repasar por encima las estructuras de control existentes en JavaScript. Primero examinaremos las sentencias de salto. La secuencia if...else nos permite realizar una bifurcación dependiendo del resultado de una condición lógica:
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.



    La parte sin duda más complicada de comprender y manejar en los lenguajes de programación (y especialmente en C y C++) son los punteros. Por eso mismo fueron eliminados tanto de Java como de JavaScript. Sin embargo, si se usan en casi todos los lenguajes será que tienen alguna utilidad, ¿no?

    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 anterior
    En 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.