L'objet de fonction en js est une chose fascinante, mais elle est souvent déroutante car elle est trop flexible.
Permettez-moi de vous montrer d'abord un extrait de code.
var scope = "global"; function constructionFunction () {var scope = "local"; return new function ("return scope");} constructionFunction () () (); function ConstructFunction2 () {var scope = "local"; return function () {return scope;}} ConstructFunction2 () ();Quel est votre premier sentiment lorsque vous voyez ces deux-là? Tous renvoient "local"? ? Si tel est le cas, vous devez examiner de plus près l'explication ci-dessous. ConstructFunction2 () doit être facile à comprendre la fermeture, et je n'entrerai pas dans les détails ici. Ensuite, je me concentrerai sur la situation de ConstructFunction ().
Le constructeur fonction () est utilisé ici. Bien que le constructeur fonction () ne soit pas très couramment utilisé, il est toujours nécessaire de le comprendre.
Qu'il s'agisse d'une instruction de définition de fonction ou d'une expression quantitative directe de fonction, la définition de la fonction doit utiliser le mot-clé fonction (). Les fonctions uniques peuvent également être définies par le constructeur fonction (), tel que:
var f = nouvelle fonction ("x", "y", "return x * y");L'effet réel de cette ligne équivaut à la ligne de code suivante.
var f = fonction (x, y) {x * y};Le constructeur fonction () peut passer dans n'importe quel nombre d'arguments de chaîne, et le texte représenté par le dernier argument est le corps de fonction; Il peut contenir n'importe quelle instruction JavaScript, et chaque instruction est divisée par un point-virgule. Toutes les autres chaînes d'argument transmises dans le constructeur sont des chaînes qui spécifient le nom de la fonction. Si la fonction définie ne contient aucun paramètre, passez simplement un corps de fonction de chaîne au constructeur.
Il y a plusieurs points pour accorder une attention particulière au constructeur de fonction ():
1. Le constructeur fonction () permet à JavaScript de créer et de compiler dynamiquement les fonctions à l'exécution.
2. Chaque fois que le constructeur fonction () est appelé, le corps de fonction sera analysé et un nouvel objet fonction sera créé. Si ce constructeur est exécuté dans une boucle ou plusieurs appels, l'efficacité d'exécution sera affectée. En revanche, les fonctions imbriquées et les expressions de définition des fonctions dans les boucles ne sont pas recompilées chaque fois qu'elles sont exécutées.
2. Le dernier point est également un point très important sur le constructeur de fonction (), c'est-à-dire que les fonctions qu'il crée n'utilisent pas la portée lexicale. Au contraire, la compilation du code corporel de fonction sera toujours exécutée à la fonction de niveau supérieur. Après avoir lu ceci, la fonction ci-dessus ConstructionFunction () (); Il devrait être facile de comprendre pour retourner "global"?
Ce qui précède est le constructeur JS Function () introduit par l'éditeur. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!