Maison >interface Web >js tutoriel >Introduction à l'utilisation des fonctions fléchées JavaScript
function funcName(params) { return params + 2; } funcName(2); // 4Cette fonction utilise des fonctions fléchées et peut être réalisée avec une seule ligne de code !
var funcName = (params) => params + 2 funcName(2); // 4N'est-ce pas cool ! Bien qu’il s’agisse d’un exemple extrêmement concis, il illustre bien les avantages des fonctions fléchées lors de l’écriture de code. Examinons de plus près la syntaxe des fonctions fléchées :
() => { statements }S'il n'y a qu'un seul paramètre, vous pouvez omettre les parenthèses :
parameters => { statements }Si la valeur de retour n'a qu'une seule expression (expression), vous pouvez omettez également les accolades :
parameters => expression // 等价于: function (parameters){ return expression; }Maintenant que vous avez appris la syntaxe des fonctions fléchées, pratiquons-la. Ouvrez la console du développeur du navigateur Chrome et saisissez :
var double = num => num * 2Nous lions la variable double à une fonction de flèche, qui a un paramètre num et renvoie num * 2. Appelez cette fonction :
double(2); // 4 double(3); // 6Pas de liaison locale this
function Counter() { this.num = 0; } var a = new Counter();
console.log(a.num); // 0
function Counter() { this.num = 0; this.timer = setInterval(function add() { this.num++; console.log(this.num); }, 1000); }
var b = new Counter(); // NaN // NaN // NaN // ..Vous constaterez qu'un NaN est imprimé chaque seconde, et non un nombre cumulatif. Qu'est-ce qui n'a pas fonctionné ?
clearInterval(b.timer);Essayons de comprendre pourquoi l'erreur s'est produite : Selon les règles expliquées dans le blog précédent, d'abord la fonction setInterval n'a pas été déclarée par un certain. L'appel de l'objet n'utilise pas le mot-clé new, et bind, call et apply ne sont pas utilisés. setInterval est juste une fonction normale. En fait, ceci dans setInterval est lié à l'objet global. Nous pouvons le vérifier en imprimant ceci :
function Counter() { this.num = 0; this.timer = setInterval(function add() { console.log(this); }, 1000); } var b = new Counter();Vous constaterez que tout l'objet fenêtre est imprimé. Utilisez la commande suivante pour arrêter l'impression :
clearInterval(b.timer);
function Counter() { this.num = 0; this.timer = setInterval(() => { this.num++; console.log(this.num); }, 1000); } var b = new Counter(); // 1 // 2 // 3 // ...Cette liaison via le constructeur Counter sera conservée. Dans la fonction setInterval, cela pointe toujours vers notre objet b nouvellement créé.
function Counter() { var that = this; this.timer = setInterval(() => { console.log(this === that); }, 1000); } var b = new Counter(); // true // true // ...
clearInterval(b.timer);
Le code d'écriture de la fonction flèche a une syntaxe plus concise ;
ne liera pas cela.
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!