Saltar al contenido principal

@babel/plugin-transform-block-scoping

Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

información

Este plugin está incluido en @babel/preset-env

Ejemplos

Entrada

JavaScript
{
let a = 3;
}

let a = 3;

Salida

JavaScript
{
var _a = 3;
}

var a = 3;

Comprobación de constantes

Este plugin también valida todas las variables const. La reasignación de constantes es un error en tiempo de ejecución y se insertará el código de error necesario para estos casos.

Instalación

npm install --save-dev @babel/plugin-transform-block-scoping

Uso

Mediante un archivo de configuración (Recomendado)

Sin opciones:

babel.config.json
{
"plugins": ["@babel/plugin-transform-block-scoping"]
}

Con opciones:

babel.config.json
{
"plugins": [
[
"@babel/plugin-transform-block-scoping",
{
"throwIfClosureRequired": true
}
]
]
}

Mediante la CLI

Shell
babel --plugins @babel/plugin-transform-block-scoping script.js

Mediante la API de Node

JavaScript
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-block-scoping"],
});

Opciones

throwIfClosureRequired

boolean, valor predeterminado: false.

En casos como el siguiente, es imposible reescribir let/const sin añadir una función y un closure adicionales durante la transformación:

JavaScript
for (let i = 0; i < 5; i++) {
setTimeout(() => console.log(i), 1);
}

En código extremadamente sensible al rendimiento, esto puede ser indeseable. Si se establece "throwIfClosureRequired": true, Babel lanzará un error al transformar estos patrones en lugar de añadir automáticamente una función adicional.

tdz

boolean, valor predeterminado: false.

Por defecto, este plugin ignorará la zona muerta temporal (TDZ) para variables de ámbito de bloque. El siguiente código no lanzará un error cuando se transpile con Babel, lo cual no cumple con la especificación:

JavaScript
i;
let i;

Si necesitas estos errores, puedes indicarle a Babel que intente encontrarlos estableciendo "tdz": true para este plugin. Sin embargo, la implementación actual podría no cubrir todos los casos extremos y lo mejor es simplemente evitar este tipo de código desde un principio.

consejo

Puedes leer más sobre cómo configurar opciones de plugins aquí