Maison > Article > interface Web > 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!