A pesar de su nombre, JavaScript solo está relacionado con Java, ya que ambos comparten algunos similitudes sintácticas. La sintaxis de JavaScript en su desarrollo inicial fue se inspiró vagamente en la sintaxis de Java y se llamó "LiveScript" cuando lo primero se lanzó en una versión beta de Netscape Navigator en 1995, de las otras ofertas nombradas de Netscape y como testimonio del hecho de que se publica en el navegador. Microsoft lanzó su propia implementación de JavaScript "JScript", poco tiempo después con Internet Explorer 3.0.
Netscape envió este primer trabajo a Ecma International, una organización que desarrolla y publica estándares técnicos para formalizar y detallar cómo de escritura de secuencias de comandos debe ser comprendido por otros navegadores. En 1997, Ecma Lanzamiento internacional ECMA-262, que estandariza la primera versión de un scripting de lenguaje común llamado ECMAScript. ECMAScript es el estándar que informa la creación lenguajes de programación más específicos, como el trabajo posterior de Microsoft en el JScript, el ActionScript de Adobe, y JavaScript en sí.
Esta distinción es importante al momento de debatir aspectos y características específicos de JavaScript: “ES5” se refiere al primer gran "control de versiones" lanzamiento de la ECMAScript en 2009, tras años de desarrollo más fragmentado. “ES6” (o “ES2015”) es la abreviatura de los estándares establecidos por la sexta edición de ECMAScript, lanzado en 2015. Después de ES6, las nuevas ediciones de ECMAScript estándar se lanzan anualmente, con los cambios y adiciones de cada edición a los que se hace referencia por año en "ES2016" o “ES2017”.
Las reglas básicas
A diferencia de los lenguajes compilados, JavaScript no se traduce a partir del código que escribe una persona en un formato que el navegador pueda comprender. Se envía una secuencia de comandos al navegador. junto con recursos como lenguaje de marcado, imágenes y hojas de estilo, el navegador lo interpreta tal como se escribió: como una secuencia legible de caracteres Unicode, analizadas de izquierda a derecha y de arriba abajo.
Cuando un intérprete de JavaScript recibe una secuencia de comandos, primero realiza Análisis léxico, que analiza la larga cadena de caracteres que conforman una secuencia de comandos y convertirlo en los siguientes elementos de entrada discretos:
- Tokens
- Caracteres de control de formato
- Terminadores de línea
- Comentarios
- Espacio en blanco (casi siempre significa tabulaciones y espacios).
Los resultados de una secuencia de comandos no se conservarán después de volver a cargarla o salir de la página actual, a menos que incluya instrucciones explícitas para hacerlo en el guion.
En términos generales, las aplicaciones de JavaScript constan de sentencias y expresiones.
Declaraciones
Una sentencia es una unidad de instrucción compuesta por una o más líneas de código que
representan una acción. Por ejemplo, puedes usar la siguiente instrucción para asignar
un valor a una variable llamada myVariable
:
let myVariable = 4;
myVariable;
> 4
Para interpretarse correctamente, las instrucciones deben terminar con punto y coma. Sin embargo, estos punto y coma no siempre es obligatorio cuando escribes JavaScript. Una función llamada la inserción automática de punto y coma permite que una línea el salto después de una instrucción completa se tratará como punto y coma si hay una punto y coma causaría un error.
ASI es la corrección de errores, no un aspecto permisivo de JavaScript en sí. Porque confiar demasiado en esta corrección de errores puede generar una ambigüedad que rompa tu código, aún debes terminar manualmente cada sentencia con un punto y coma.
Declaraciones de bloqueo
Una sentencia de bloque agrupa cualquier cantidad de sentencias y declaraciones dentro de un par.
de llaves ({}
). Te permite combinar sentencias en lugares donde JavaScript
espera solo una.
Con más frecuencia, verás sentencias de bloqueo al lado de
de flujo de control,
como if
:
if ( x === 2 ) {
//some behavior;
}
Expresiones
Una expresión es una unidad de código que da como resultado un valor y, por lo tanto, puede
cuando se espera un valor. 2 + 2
es una expresión que da como resultado el
valor 4
:
2 + 2;
> 4
El “operador de agrupación”, un par de paréntesis de cierre, se usa para agrupar partes de una expresión para asegurarte de que una parte de ella se se evalúe como una sola unidad. Por ejemplo, puedes usar un operador de agrupación para anular el orden matemático de las operaciones o para mejorar la legibilidad del código:
2 + 2 * 4;
> 10
( 2 + 2 ) * 4;
> 16
let myVariable = ( 2 + 2 );
myVariable;
> 4
Escritura poco segura
JavaScript es un lenguaje de escritura débil, lo que significa que un valor de datos no necesita se marquen explícitamente como un tipo de datos específico. A diferencia de un lenguaje con escritura estricta, JavaScript puede inferir el tipo deseado a partir del el contexto de un valor y lo conviertes en ese tipo. Este proceso se denomina coerción de tipos.
Por ejemplo, si agregas un número a un valor de cadena en un idioma con tipado fuerte, como Python, el resultado es un error:
>>> "1" + 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects
En lugar de mostrar un error, JavaScript fuerza el valor numérico a una cadena y concatena los dos valores, el comportamiento previsto más probable al agregar cualquier valor a una cadena:
"1" + 1;
> "11"
Los tipos de datos también se pueden coercionar de forma explícita. En el siguiente ejemplo, se fuerza la
el valor numérico 100
a un valor de cadena de "100"
con la biblioteca integrada de JavaScript
Método toString
:
let myVariable = 100;
typeof myVariable;
> "number"
myVariable = myVariable.toString();
> "100"
typeof myVariable;
> "string"
Distinción entre mayúsculas y minúsculas
A diferencia del HTML y de la mayoría de los CSS, JavaScript distingue entre mayúsculas y minúsculas. Esto significa que siempre debes usar mayúsculas en todo de forma coherente, desde propiedades y métodos integrados en el lenguaje con los identificadores que definas tú mismo.
console.log( "Log this." );
> Log this.
console.Log( "Log this too." );
> Uncaught TypeError: console.Log is not a function
const myVariable = 2;
myvariable;
> Uncaught ReferenceError: myvariable is not defined
myVariable;
> 2
Espacio en blanco
JavaScript no es sensible a los espacios en blanco. Esto significa que el intérprete ignora la cantidad y el tipo (tabulaciones o espacios) de los espacios en blanco utilizados.
console.log( "Log this" );console.log("Log this too");
> "Log this."
> "Log this too."
Sin embargo, la presencia del espacio en blanco puede ser significativa como separador entre tokens léxicos:
let x;
[tokens: [let]
[x]
]
letx;
> Uncaught ReferenceError: letx is not defined
[tokens: [letx]
]
Cuando se usa un espacio en blanco para separar tokens léxicos significativos, el analizador ignora la cantidad y el tipo de espacio en blanco:
let x = 2;
[tokens: [let]
[x]
[=]
[2]
]
Lo mismo ocurre con los saltos de línea, aunque hay casos en los que pueden causar problemas cuando finaliza una sentencia de forma prematura):
let x
=
2;
[tokens: [let]
[x]
[=]
[2]
]
Desde el punto de vista estilístico, algunos tipos de sentencias suelen ocupar una sola línea:
let x = 1;
let y = 2;
Algunas sentencias suelen usar varias líneas:
if ( x == 2 ) {
//some behavior;
}
Sin embargo, estas convenciones son solo para facilitar la lectura. JavaScript interpreta los ejemplos anteriores de la misma manera que lo siguiente:
let x=1;let y=2;
if(x==2){}
Debido a esto, un proceso automatizado que quita los espacios en blanco no esenciales de archivos de secuencia de comandos para reducir el tamaño de transferencia es un paso común en la preparación de JavaScript para un entorno de producción, junto con otras optimizaciones.
El uso de caracteres de espacio en blanco en JavaScript depende en gran medida del autor y las preferencias de los encargados de mantenimiento. Proyectos de JavaScript con varios desarrolladores Contribuir código a menudo sugiere o aplica ciertas convenciones de espacio en blanco a garantizar un formato coherente del código, por ejemplo, el uso de tabulaciones o espacios para aplicar sangría a las sentencias anidadas:
let myVariable = 10;
if ( typeof myVariable === "number" ) {
console.log( "This variable is a number." );
if( myVariable > 5 ) {
console.log( "This variable is greater than five." );
}
}
> "This variable is a number."
> "This variable is greater than five."
Verifica tus conocimientos
¿Qué es una expresión?
JavaScript distingue mayúsculas de minúsculas.