Maison  >  Article  >  interface Web  >  Exemple d'explication de la portée et de la fermeture de la fonction dans js

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

小云云
小云云original
2018-03-07 10:58:481597parcourir

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);
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;

}
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);
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();

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);


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!

Déclaration:
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