Comprendre la sémantique des fonctions au niveau des blocs ES6
Introduction
Avec l'avènement d'ES6, bloquer Les déclarations de fonctions de niveau-niveau sont devenues un ajout précieux au langage. Malgré les hypothèses initiales, la sémantique précise de ces fonctions englobe un spectre plus large, y compris les distinctions entre les modes stricts et non stricts et les considérations de compatibilité du navigateur.
Sémantique
Le tableau ci-dessous résume les aspects clés de la sémantique des fonctions au niveau du bloc :
Environnement d'exécution | Visible à l'extérieur Bloc | Hissé en haut du bloc | TDZ |
---|---|---|---|
Non strict, pas d'extensions Web | Oui, comme var | Oui | Aucun |
Strict, pas de Web extensions | Non | Oui | Aucun |
Extensions Web non strictes | Oui, comme var | Oui | Aucun |
Strict, Web extensions | Non | Oui, deux fois (fonction et bloc) | La liaison au niveau de la fonction n'est pas définie avant la déclaration |
Implications du mode strict
Le concept de « mode strict » dans ce contexte fait référence à l'emplacement interne [[Strict]] de l'objet fonction, et non au rigueur de la fonction elle-même. Par conséquent, l'extrait de code impliquant une déclaration de fonction avec "use strict" dans un code environnant non strict est toujours considéré comme "non strict".
Extensions Web
Le "web extensions" s'appliquent uniquement au code non strict (bâclé) avec des apparences d'instructions de fonction "saines". En mode bâclé avec une sémantique de compatibilité web, une déclaration de fonction au sein d'un bloc est gérée comme suit :
En substance, ce comportement entraîne deux liaisons distinctes portant le même nom, l'une au niveau du bloc et l'autre au niveau de la fonction.
Conclusion
Bien que les fonctions au niveau des blocs dans ES6 offrent des fonctionnalités étendues, comprendre leur sémantique précise, y compris l'interaction entre les modes stricts et la compatibilité Web, est cruciale pour garantir une utilisation correcte et éviter les pièges potentiels.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3