Maison > interface Web > js tutoriel > le corps du texte

Exemple d'explication de la portée et de la fermeture de la fonction dans js

小云云
Libérer: 2018-03-07 10:58:48
original
1628 Les gens l'ont consulté

Cet article partage principalement avec vous des exemples de portée et de fermeture de fonction dans js. 1. La portée est très simple, il suffit d'un simple clic. La portée de js n'a pas de portée au niveau du bloc, seulement une portée globale et une portée de fonction ; 🎜>

Par exemple :

if(true){

var a=100;

}

console.log(a);
Copier après la connexion
En java ou c, les accolades sont en dehors du bloc et ne peuvent pas être obtenues, mais en js c'est possible, ce qui équivaut à


var a;

if(true){

a=100;

}
Copier après la connexion
Le a ici est la portée globale ; toutes les variables définies en dehors de la fonction sont la portée globale.

Cas particulier :

function  Loga(){

a=100

}

console.log(a);
Copier après la connexion
Le a ici peut également être obtenu Lorsque la variable est déclarée directement sans var à l'intérieur de la fonction, la portée parent est également considérée comme la portée, mais pas. Il est recommandé d'écrire ainsi, en général vous devez déclarer la définition.

La compréhension littérale de la portée de la fonction est que les variables définies à l'intérieur de la fonction fonctionnent à l'intérieur de la fonction.

La différence entre la portée de la fonction et la portée globale est que la portée globale peut être appelée dans la portée de la fonction ; variables dans la portée et les modifier, mais la portée globale ne peut pas appeler les variables définies dans la portée de la fonction. La définition ici est très importante (qu'elle soit modifiée). Cela implique la chaîne de portée, ce qui signifie que les variables peuvent accéder aux variables du parent. portée à son tour. En termes simples, il est accessible de l’intérieur vers l’extérieur mais ne peut pas être consulté de l’extérieur vers l’intérieur.

2. Fermeture

Il n'y a pas de définition exacte du concept de fermeture

Une fonction comme valeur de retour ;<🎜 >

b. Les fonctions sont passées en paramètres

Exemple :

  function F1(){
    		var a=100
		return function(){
			console.log(a);//a是自由变量
		}
	}
	var a=200;
	var f=F1();
	f();
Copier après la connexion

Il s'agit d'un cas de fermeture typique, la valeur de retour f est une fonction, exécutez Le L'environnement est global, mais l'environnement généré est dans F1. La portée de la fonction ici est F1, donc la sortie est 100 ; a voici une variable libre, qui doit être recherchée dans la portée parent, qui est F1.

Deuxièmement Dans le cas, la fonction est passée en paramètre

Évidemment le résultat est le même La raison est la même que ci-dessus L'environnement d'exécution est F2, mais l'environnement de génération. est F1 et la portée parent est F1, donc la sortie est toujours 100.
	function F1(){
		var a=100
		return function(){
			console.log(a);
		}
	}
	var a=200;
	var f=F1();
	function F2(fn){
		var a=300;
		fn();
	}
	F2(f);
Copier après la connexion


Recommandations associées :

Chaîne de portée et chaîne de prototypes et héritage prototypique en js

Chaîne de portée et fermeture JS Partage d'instances de package

Explication détaillée de la portée et de la fermeture de JavaScript

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!