Compreendendo a semântica das funções em nível de bloco ES6
Introdução
Com o advento do ES6, bloqueie As declarações de função em nível tornaram-se uma adição valiosa à linguagem. Apesar das suposições iniciais, a semântica precisa dessas funções abrange um espectro mais amplo, incluindo distinções entre modos estritos e não estritos e considerações de compatibilidade do navegador.
Semântica
A tabela abaixo resume a aspectos principais da semântica da função em nível de bloco:
Ambiente de execução | Visível externamente Bloco | Içado ao topo do bloco | TDZ |
---|---|---|---|
Não estrito, sem extensões da web | Sim, como var | Sim | Nenhum |
Estrito, não extensões da web | Não | Sim | Nenhum |
Extensões da web não restritas | Sim, como var | Sim | Nenhum |
Estrito, web extensões | Não | Sim, duas vezes (função e bloco) | A vinculação com escopo de função é indefinida antes da declaração |
Implicações do modo estrito
O conceito de "modo estrito" neste contexto refere-se ao slot interno [[Strict]] do objeto de função, não o rigor da própria função. Portanto, o trecho de código que envolve uma declaração de função com "use strict" dentro de um código circundante não estrito ainda é considerado "não estrito".
Extensões da Web
O "web extensões" aplicam-se apenas a código não estrito (desleixado) com aparências de instrução de função "sãs". No modo desleixado com semântica de compatibilidade da web, uma declaração de função dentro de um bloco é tratada da seguinte forma:
Em essência, esse comportamento resulta em duas ligações separadas com o mesmo nome, uma com escopo de bloco e outra com escopo de função.
Conclusão
Embora as funções em nível de bloco no ES6 ofereçam funcionalidade estendida, compreender sua semântica precisa, incluindo a interação entre modos estritos e compatibilidade web, é crucial para garantir o uso adequado e evitar possíveis armadilhas.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3