JScript  

Solucionar problemas en las secuencias de comandos

Hay partes de un lenguaje de programación en las que se puede ver enredado si no tiene cuidado y cada lenguaje tiene sorpresas específicas. Usemos como ejemplo el valor null: el valor en JScript se comporta de forma diferente al valor Null de los lenguajes C o C++.

Algunas de las áreas problemáticas con las que se puede encontrar al escribir secuencias de comandos de JScript son las siguientes.

Errores de sintaxis

Como la sintaxis es mucho más rígida en los lenguajes de programación que en los lenguajes naturales, es importante prestar mucha atención a los detalles al escribir secuencias de comandos. Si, por ejemplo, desea que un parámetro en particular sea una cadena, tendrá problemas si se olvida de encerrarlo entre comillas al escribirlo.

Orden de interpretación de las secuencias de comandos

La interpretación de JScript es parte del proceso de análisis de HTML de los exploradores Web. Por tanto, si coloca una secuencia de comandos dentro de una etiqueta <HEAD> en un documento, se interpreta antes de examinar cualquier etiqueta <BODY>. Si tiene objetos que se crean en la etiqueta <BODY>, no existen en el momento que se está analizando <HEAD> y no los puede utilizar la secuencia de comandos.

Nota   Este comportamiento es específico de Internet Explorer. ASP y WSH tienen modelos de ejecución diferentes (al igual que otros hosts).

Conversión automática de tipos

JScript es un lenguaje en el que no se necesita declarar los tipos de datos y se convierten automáticamente. En consecuencia, independientemente del hecho de que los valores que tienen tipos distintos no son iguales, las expresiones de los siguientes ejemplos devuelven como resultado true.

"100" == 100;
false == 0

Para comprobar que el tipo y el valor coinciden, use el operador de igualdad estricta, ===. Los siguientes ejemplos dan como resultado false:

"100" === 100;
false === 0;

Precedencia de los operadores

Al realizar una operación concreta durante la evaluación de una expresión influye más la precedencia de los operadores que la ubicación de la expresión. Así, en el siguiente ejemplo, la multiplicación se realiza antes que la resta, aunque ésta aparezca primera en la expresión.

elRadio = unPuntoDelPerimetro - elPuntoDelCentro * elFactorDeCorreccion;

Usar bucles for...in con objetos

Al pasar por las propiedades de un objeto con un bucle for...in, no necesariamente puede predecir o controlar el orden en el que se asignan los campos del objeto a la variable contadora del bucle. Más aún, el orden puede ser distinto en implementaciones diferentes del lenguaje.

Palabra clave with

La instrucción with es adecuada para hacer referencia a propiedades que ya existen en un objeto especificado, pero no se puede utilizar para agregar propiedades a un objeto. Para crear nuevas propiedades en un objeto, debe hacer referencia al objeto específicamente.

Palabra clave this

Aunque utilice la palabra clave this dentro de la definición de un objeto para hacer referencia al propio objeto, no puede utilizar this o palabras clave similares para hacer referencia a la función que se está ejecutando cuando la función no es una definición de objeto. Si la función se va a asignar a un objeto como un método, para hacer referencia al objeto puede usar la palabra clave this dentro de la función.

Escribir una secuencia de comandos que escribe una secuencia de comandos en Internet Explorer

La etiqueta </SCRIPT> termina la secuencia de comandos actual si el intérprete la encuentra. Para mostrar el propio "</SCRIPT>", vuelva a escribir esto como, al menos, dos cadenas (por ejemplo, "</SCR" y "IPT>") que pueda concatenar en la instrucción que las escribe.

Referencias implícitas a una ventana en Internet Explorer

Como se puede abrir más de una ventana a la vez, cualquier referencia implícita a una ventana se considera que apunta a la ventana actual. Para utilizar otras ventanas, debe utilizar una referencia explícita.

Ayuda de Javascript y Vbscript para Javascripts.astalaweb.com.