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

Trois caractéristiques du JS et des langages fonctionnels_Connaissances de base

WBOY
Libérer: 2016-05-16 16:56:55
original
1068 Les gens l'ont consulté

Tout d'abord, il y a un concept : ce n'est pas un langage qui supporte des fonctions. Ce langage peut être appelé un « langage fonctionnel ». En plus d'être appelées, les fonctions des langages fonctionnels ont également d'autres propriétés. Il y a les trois points suivants :
1. Les fonctions sont des opérandes
2. Enregistrez les données dans les fonctions
3. Les opérations dans les fonctions n'ont aucun effet secondaire en dehors de la fonction
1.
Lorsqu'une fonction normale est appelée, elle peut être comprise abstraitement comme : la fonction est un opérateur et les paramètres transmis sont des opérandes
Mais lorsqu'une fonction en JavaScript est utilisée comme paramètre d'une autre ; fonction, Il est passé par référence, et ce "paramètre entrant" peut être compris comme un opérande. La conclusion est que les fonctions (en tant que « paramètres entrants ») ont la signification d’opérandes et que les « paramètres de fonction » ne sont pas différents des paramètres ordinaires.

2. Sauvegarde des données au sein de la fonction
Dans les langages impératifs, les variables privées (variables locales) au sein des fonctions ne peuvent pas être sauvegardées. Du point de vue de l'exécution du programme, les variables locales sont allouées sur la pile et une fois l'exécution de la fonction terminée, la pile occupée est libérée. Par conséquent, les données de la fonction ne peuvent pas être enregistrées.
Dans les fonctions JavaScript, les variables privées au sein de la fonction peuvent être modifiées, et lors de la « saisie » à nouveau de la fonction, l'état modifié continuera. L'exemple suivant illustre cette fonctionnalité :

Copier le code Le code est le suivant :

var set ,get ;
function MyFunc(){
var value = 100;

fonction set_value(v){
valeur = v;
}
fonction get_value(){
valeur de retour;
}

set = set_value;
get = get_value;
}
MyFunc();
console.log(get()); > console.log(get()); //300

Un avantage évident est que si une donnée peut être conservée dans une fonction, alors la fonction (en tant que constructeur) peut être utilisée lorsqu'elle est affectée à une instance. Ces données effectuent des opérations ; et entre plusieurs instances, puisque les données existent dans des fermetures différentes, elles ne s'affecteront pas.

Expliqué en termes orientés objet, cela signifie que différentes instances ont leurs propres données privées (copiées à partir de certaines données publiques). L'exemple suivant illustre cette fonctionnalité :


fonction MonObjet () {
var value = 100;
this.setValue = function(){
value = v;
}
this.showValue = function(){
console.log (value );
}
}
var obj1 = new MyObject();
var obj2 = new MyObject();

obj2.setValue(300); obj1.showValue(); //100;


3. Les opérations au sein de la fonction n'ont aucun effet secondaire en dehors de la fonction
Ceci La signification de cette fonctionnalité est :
* La fonction utilise le paramètre d'entrée pour effectuer des opérations sans le modifier (utilisé comme paramètre de valeur au lieu d'un paramètre variable)
* La valeur des autres données en dehors de la fonction sera ne pas être modifié pendant l'opération (par exemple, les variables globales)
* Une fois l'opération terminée, la valeur est transférée au système externe via "retour de fonction"

Une telle fonction n'a aucun effet secondaire sur le système externe pendant le fonctionnement. Cependant, nous avons remarqué que JavaScript permet de référencer et de modifier des variables globales à l'intérieur des fonctions, et que des variables globales peuvent même être déclarées. Cela détruit en réalité ses caractéristiques fonctionnelles. De plus, JavaScript permet également de modifier les membres d'objets et de tableaux au sein des fonctions - ces membres doivent être modifiés par des méthodes d'objet plutôt que par d'autres fonctions en dehors du système d'objets.

Donc : cette fonctionnalité de JavaScript ne peut être garantie que par les habitudes de programmation des développeurs.

Étiquettes associées:
js
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