Liaison des fonctions fléchées : une explication
Lors de l'utilisation des fonctions fléchées en JavaScript, les développeurs peuvent rencontrer un comportement inattendu concernant la liaison de « ceci ». Contrairement aux fonctions normales, les fonctions fléchées conservent une portée lexicale, ce qui signifie qu'elles héritent de la liaison « ceci » de l'environnement dans lequel elles ont été définies. Par conséquent, il n'est pas possible de lier à nouveau « ceci » dans une fonction fléchée.
Considérez cet exemple :
var f = () => console.log(this); var o = {'a': 42}; var fBound = f.bind(o); fBound();
Dans cet extrait de code, nous essayons de lier la fonction fléchée « f » à l'objet 'o' en utilisant la méthode '.bind()'. Cependant, lorsque nous appelons « fBound », il génère l'objet global « window » au lieu de « o ».
En effet, les fonctions fléchées héritent de leur liaison « this » de l'environnement lexicalement englobant, qui dans ce cas est le contexte d’exécution global. Par conséquent, 'f()' et 'fBound()' font toujours référence au 'this' global.
Pour éviter ce problème, il est recommandé d'utiliser des fonctions régulières lorsqu'une liaison est requise. Ces fonctions créent un nouveau contexte d'exécution, vous permettant de définir explicitement la liaison 'this' à l'aide de la méthode '.bind()'.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!