Por que .then () acorrentado a Promise.resolve () permite que a declaração const seja reatribuída?
Dado que uma variável declarada comconst
não pode ser reatribuído ou excluído, consulte
Existem constantes em JavaScript?
É possível excluir uma variável declarada usando const??
por que é possível reatribuir um valor a uma variável declarada comconst
dentro de uma função passada para.then()
acorrentado aPromise.resolve()
Ondeconst
variável é passada, mas não é possível reatribuir a variávelconst
variável com a função passada para.then()
acorrentado aPromise
construtor ondeconst
variável é passada pararesolve()
parâmetro dePromise
construtorresolver
função?
"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, Atualizado
Para esclarecer a base e a motivação da investigação, a Pergunta é uma tentativa de determinar quando um identificador pode ser usado, que é o mesmo que umconst
declaração e quando esse procedimento não for possível. Em essência, tentar criar um identificador que gere um erro em qualquer escopo em que é feita uma tentativa de atribuir um valor diferente ao identificador - seja escopo de função, escopo de bloco ou em qualquer lugar do código - a "superconst
"indetificador ou o mais próximo possível dessa descrição atualmente possível, dependendo do mecanismo.Map
ouWeakMap
ouclass
o mais próximo que temos atualmente das implementações mais recentes do navegador?