Résumé des exemples de fermeture js_connaissances de base
Fermeture Js
Les choses à savoir avant la fermeture
1. Portée de la fonction
(1) La particularité du langage Js est que les variables globales peuvent être lues directement à l'intérieur de la fonction
Si en php
$n=100;
fonction parent(){
écho $n;
>
parent(); // signalera une erreur n n'est pas défini
?>
(2). Les variables locales au sein de la fonction ne peuvent pas être lues en dehors de la fonction
Notez que var doit être ajouté lors de la déclaration de variables à l'intérieur d'une fonction, sinon une variable globale sera déclarée
fonction parent(){
m=50;
>
parent();
alerte(m);//50
//Bien sûr, c'est encore plus vrai en php,
fonction parent(){
global $m;//global, la définition et l'affectation doivent être séparées
M$=50 ;
>
parent();
écho $m;//50
?>
//S'il n'y a pas de global, une erreur non définie sera quand même signalée
Parfois, si vous avez besoin d'obtenir les variables locales à l'intérieur de la fonction, vous devez utiliser une méthode flexible pour tirer parti des caractéristiques de la portée des variables js, comme définir une sous-fonction à l'intérieur de la fonction. fonction, la fonction parent est sa fonction globale et la sous-fonction est Les fonctions peuvent accéder aux variables de la fonction parent (qui sont des variables locales pour l'ensemble du code js)
Toutes les variables locales à l'intérieur de Parent sont visibles par ses fonctions enfants, mais les variables locales dans ses fonctions enfants ne sont pas visibles par sa fonction parent. Il s'agit de la structure de portée de chaîne unique des objets enfants js qui recherchera toutes les variables du parent. objet vers le haut d'un niveau à la fois. Toutes les variables de l'objet parent sont visibles par les objets enfants, et l'inverse n'est pas vrai ! La fonction fils ci-dessus est une fermeture
Certains étudiants peuvent être comme ça
fonction parent(){
varm=50;
fonction fils(){
alerte(m);
>
>
parent();
fils()//La fonction de rapport fils n'est pas définie
Notez qu'en JavaScript, les fonctions déclarées dans les fonctions sont locales et sont publiées une fois l'exécution de la fonction terminée
Faites attention à la différence entre ceci et php
fonction parent(){
fonction fils(){
M$=50 ;
écho $m;
>
>
parent();
son();//Sortie 50 et aucune erreur ne sera signalée
?>
Fermeture
Définir la fonction à l'intérieur de la fonction, le pont reliant l'intérieur et l'extérieur de la fonction
La fermeture a deux fonctions :
L'une est la lecture mentionnée précédemment des variables à l'intérieur de la fonction,
La seconde consiste à stocker les valeurs de ces variables en mémoire pour réaliser le partage de données
Voici quelques exemples de fermetures
Le résultat de l'exécution de la fonction anonyme (c'est-à-dire que la déclaration de la sous-fonction interne est affectée à la variable globale cut), i est enregistré en mémoire
Lors de l'exécution de cut(), la valeur est obtenue directement de la mémoire. i ne peut être appelé que par la fonction cnt(), et direct alert(i) ne fonctionnera pas
Vous pouvez également passer des paramètres dans la fermeture
var cnt=(fonction(num){
fonction de retour(){
alerte(num);
num ;
>
})(5);
cnt();//5
cnt();//6
cnt();//7
//Bien sûr, vous pouvez également transmettre des paramètres lors de l'appel
var cnt=(fonction(){
var je=0;
fonction de retour (num) {
num =i;
alerte(num);
je ;
>
})();
cnt(1);//1
cnt(2);//3
cnt(3);//5
Afin d'avoir une meilleure compréhension des fermetures, regardons le code suivant
Par exemple, je veux renvoyer un tableau. Il y a 5 fonctions dans le tableau. La première fonction affiche 0, la seconde affiche 1...
Si le code est écrit comme ça
boîte de fonction(){
var arr=[];
pour(i=0;i<5;i ){
arr=fonction(){return i;}
>
retour arr; >
var a=box();
alert(a);//Tableau contenant cinq corps de fonctions
alerte(a[0]());
alerte(a[1]());
function(){return i;} }
Le dernier i vaut 4, puis il devient 5
Pour les arrêts de boucle
J'ai trouvé que 5 pop up dans tous les cas, ce qui évidemment ne répond pas à nos exigences
Solution 1
Exécution automatique des fonctions à l'intérieur
var arr=[];
pour(i=0;i<5;i ){
arr=(function(num){return i;})(i);
>
retour arr
>
var a=box();
pour(var i=0;i
>
Solution 2
Mise en œuvre de la fermeture
var arr=[];
pour(var i=0;i<5;i){
arr=(fonction(num){
Fonction de retour(){numéro de retour;}
})(i);
retour arr;
>
pour(var i=0;i<5;i ){
alerte(arr());//0,1,2,3,4
>
arr=(fonction(num){
return function(){return num;}
})(i);
Quand je=0
arr[0]=(function(num){return function(){return num;}})(0);
13 heures
arr[1]=(function(num){return function(){return num;}})(1
);
Ce qui précède sont les avantages de la fermeture ! C'est très simple et pratique.

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La technologie de détection et de reconnaissance des visages est déjà une technologie relativement mature et largement utilisée. Actuellement, le langage d'application Internet le plus utilisé est JS. La mise en œuvre de la détection et de la reconnaissance faciale sur le front-end Web présente des avantages et des inconvénients par rapport à la reconnaissance faciale back-end. Les avantages incluent la réduction de l'interaction réseau et de la reconnaissance en temps réel, ce qui réduit considérablement le temps d'attente des utilisateurs et améliore l'expérience utilisateur. Les inconvénients sont les suivants : il est limité par la taille du modèle et la précision est également limitée ; Comment utiliser js pour implémenter la détection de visage sur le web ? Afin de mettre en œuvre la reconnaissance faciale sur le Web, vous devez être familier avec les langages et technologies de programmation associés, tels que JavaScript, HTML, CSS, WebRTC, etc. Dans le même temps, vous devez également maîtriser les technologies pertinentes de vision par ordinateur et d’intelligence artificielle. Il convient de noter qu'en raison de la conception du côté Web

En C++, une fermeture est une expression lambda qui peut accéder à des variables externes. Pour créer une fermeture, capturez la variable externe dans l'expression lambda. Les fermetures offrent des avantages tels que la réutilisabilité, la dissimulation des informations et une évaluation paresseuse. Ils sont utiles dans des situations réelles telles que les gestionnaires d'événements, où la fermeture peut toujours accéder aux variables externes même si elles sont détruites.

Les expressions C++ Lambda prennent en charge les fermetures, qui enregistrent les variables de portée de fonction et les rendent accessibles aux fonctions. La syntaxe est [capture-list](parameters)->return-type{function-body}. capture-list définit les variables à capturer. Vous pouvez utiliser [=] pour capturer toutes les variables locales par valeur, [&] pour capturer toutes les variables locales par référence, ou [variable1, variable2,...] pour capturer des variables spécifiques. Les expressions Lambda ne peuvent accéder qu'aux variables capturées mais ne peuvent pas modifier la valeur d'origine.

Une fermeture est une fonction imbriquée qui peut accéder aux variables dans la portée de la fonction externe. Ses avantages incluent l'encapsulation des données, la conservation de l'état et la flexibilité. Les inconvénients incluent la consommation de mémoire, l’impact sur les performances et la complexité du débogage. De plus, les fermetures peuvent créer des fonctions anonymes et les transmettre à d'autres fonctions sous forme de rappels ou d'arguments.

La relation entre js et vue : 1. JS comme pierre angulaire du développement Web ; 2. L'essor de Vue.js en tant que framework front-end ; 3. La relation complémentaire entre JS et Vue ; Vue.

L'impact des pointeurs de fonction et des fermetures sur les performances de Go est le suivant : Pointeurs de fonction : légèrement plus lents que les appels directs, mais améliorent la lisibilité et la réutilisabilité. Fermetures : généralement plus lentes, mais encapsulent les données et le comportement. Cas pratique : les pointeurs de fonction peuvent optimiser les algorithmes de tri et les fermetures peuvent créer des gestionnaires d'événements, mais ils entraîneront des pertes de performances.

Oui, la simplicité et la lisibilité du code peuvent être optimisées grâce à des appels et des fermetures enchaînés : les appels en chaîne lient les appels de fonction dans une interface fluide. Les fermetures créent des blocs de code réutilisables et accèdent à des variables en dehors des fonctions.

Les fermetures en Java permettent aux fonctions internes d'accéder aux variables de portée externe même si la fonction externe est terminée. Implémentée via des classes internes anonymes, la classe interne contient une référence à la classe externe et maintient les variables externes actives. Les fermetures augmentent la flexibilité du code, mais vous devez être conscient du risque de fuite de mémoire, car les références à des variables externes par des classes internes anonymes maintiennent ces variables en vie.
