¿Por qué .then () encadenado a Promise.resolve () permite reasignar la declaración constante?
Dado que una variable declarada conconst
no se puede reasignar o eliminar ver
¿Hay constantes en JavaScript?
JavaScript const Palabra clave
¿Es posible eliminar una variable declarada usando const??
¿Por qué es posible reasignar un valor a una variable declarada conconst
dentro de una función pasada a.then()
encadenado aPromise.resolve()
dóndeconst
se pasa la variable, pero no es posible reasignar laconst
variable con función pasada a.then()
encadenado aPromise
constructor dondeconst
la variable se pasa aresolve()
parámetro dePromise
constructorresolver
¿función?
"use strict"
const state = "123";
Promise.resolve(state)
.then(state => {
console.log(state); // `"123"`
state = 456; // reassign `const` variable `state` to `"456"`
return state
})
.then(state => console.log(state)) // `"456"`
// not reached
.catch(err => console.error(err.message));
{
"use strict";
const state = "123";
new Promise(resolve => {
console.log(state); // `"123"`
state = "456"; // reassign `const` variable `state` to `456`
resolve(state);
})
.then(state => {
console.log(state);
})
// `Error: Assignment to constant variable.`
.catch(err => console.error(err.message));
}
Editar, actualizado
Para aclarar la base y la motivación de la investigación, la Pregunta es un intento de determinar cuándo se puede usar un identificador que es lo mismo que unconst
declaración, y cuando ese procedimiento no es posible. En esencia, tratar de crear un identificador que arroje un error en cualquier ámbito en el que se intente asignar al identificador un valor diferente, ya sea el ámbito de la función, el ámbito del bloque o cualquier parte del código, un "superconst
"indetificador, o lo más cercano posible a esa descripción actualmente posible, dependiendo del motor.Map
oWeakMap
oclass
¿Qué tan cerca tenemos actualmente en las implementaciones de navegador más recientes?