block

Resumen

Una sentencia block se utiliza para agrupar cero o m谩s sentencias. Este grupo block se delimita por un par de llaves.

Sintaxis

{ sentencia_1; sentencia_2; ... sentencia_n; }
sentencia_1, sentencia_2, sentencia_n
Sentencias agrupadas dentro de una sentencia block.

Descripci贸n

Esta sentencia se utiliza com煤nmente para controlar sentencias de flujo (es decir if, for, while). Por ejemplo:

while (x < 10) {
   x++;
}

Las variables declaradas con var no tienen alcance de bloque(block scope). Las variables introducidas dentro de un grupo block tienen el alcance de la funci贸n que lo contiene o del script, y los efectos de su asignaci贸n persisten m谩s all谩 del grupo block en s铆 mismo. En otras palabras, las sentencias block no incluyen ning煤n alcance. Aunque los grupos block "en solitario" (standalone) son una sintaxis v谩lida, usted no querr谩 utilizar grupos block en solitario en JavaScript, ya que ellos no hacen lo que parecen, si piensa que funcionan de manera similar a los bloques en C o Java. Por ejemplo:

var x = 1;
{
   var x = 2;
}
alert(x); // resultado 2

Este obtiene el resultado 2 ya que la sentencia var x dentro del grupo block tiene el mismo alcance que la sentencia var x antes del mismo. En C o Java, el c贸digo equivalente tendr铆a como resultado 1.

Con let const

Por el contrario, las variables declaradas con let y const tienen alcance de bloque.

let x = 1;
{
  let x = 2;
}
console.log(x); // logs 1

El alcance x = 2 es limitado solamente al bloque en el que est谩 definido.

Lo mismo para  const:

const c = 1;
{
  const c = 2;
}
console.log(c); // logs 1 y no lanza SyntaxError...

Tenga en cuenta que la variable  const c = 2 con alcance de bloque, no lanza un  SyntaxError: El identificador 'c' ya ha sido declarado. Esto es porque se puede declarar de forma 煤nica dentro del bloque, sin interferir con la otra que tiene un  alcance global.

Con function

La declaraci贸n de una funci贸n tambi茅n tiene un alcance limitado dentro del bloque donde se produce la declaraci贸n:

nacion('frances');  // TypeError: nacion no es una funci贸n
{
  function nacion(nacionalidad) {
   console.log('Yo soy ' + nacionalidad);
  }
nacion('espa帽ol'); // correcto. logs Yo soy espa帽ol
}

 

Vea Tambi茅n