Maison interface Web js tutoriel Explication détaillée de la création d'objets de fonction JavaScript, des paramètres et des instances de portée

Explication détaillée de la création d'objets de fonction JavaScript, des paramètres et des instances de portée

Jul 25, 2017 am 11:29 AM
javascript js 参数

" "Constructeur" :

La liste de paramètres peut avoir autant de paramètres que vous le souhaitez, suivis du corps de la fonction, par exemple :


imprimera le résultat :

6
var funcName = new Function( [argname1, [... argnameN,]] body );
Copier après la connexion
Mais qui créerait une fonction d'une manière aussi difficile à utiliser ? Si le corps de la fonction est complexe, il faudra beaucoup d'efforts pour assembler la chaîne, donc JavaScript fournit une sorte de sucre de syntaxe, c'est-à-dire via des littéraux Pour créer une fonction :

var add = new Function("x", "y", "return(x+y)"); 
print(add(2, 4));
Copier après la connexion

ou :


En fait, un tel sucre syntaxique est plus susceptible de mal comprendre les programmeurs des domaines traditionnels. Le mot-clé function appellera Function crée un nouvel objet et transmet avec précision la liste des paramètres et le corps de la fonction au constructeur de la fonction.

De manière générale, déclarer un objet dans la portée globale (la portée sera présentée en détail dans la section suivante) revient simplement à attribuer une valeur à un attribut. Par exemple, la fonction add dans l'exemple ci-dessus ajoute simplement une valeur à. l'objet global.Un attribut est ajouté, et le nom de l'attribut est add, et la valeur de l'attribut est un objet, c'est-à-dire function(x, y){return x+y;}. La syntaxe de cette instruction est la suivante :
function add(x, y){ 
return x + y; 
}
Copier après la connexion

Pas de différence. Ils ajoutent tous dynamiquement un nouvel attribut à l'objet global, c'est tout.
var add = function(x, y){ 
return x + y; 
}
Copier après la connexion
Afin d'illustrer que les fonctions, comme d'autres objets, existent en tant qu'objet indépendant dans le système d'exécution JavaScript, autant regarder cet exemple :


Il n'y a rien de mal, même si p est cité Une fonction (objet) anonyme, mais elle peut aussi avoir des attributs, exactement comme les autres objets. Les résultats d'exécution sont les suivants :
var str = "This is a string";
Copier après la connexion


1.2 Paramètres de la fonction
function p(){ 
print("invoke p by ()"); 
} 
p.id = "func"; 
p.type = "function"; 
print(p); 
print(p.id+":"+p.type); 
print(p());
Copier après la connexion
En JavaScript. , les paramètres de la fonction C'est assez intéressant. Par exemple, vous pouvez passer n'importe quel nombre de paramètres à une fonction, même si la fonction est déclarée sans spécifier de paramètres formels, par exemple :


La fonction. adPrint accepte trois formes lorsqu'il est déclaré Paramètres : la chaîne à imprimer, la longueur à imprimer et s'il faut la convertir en marqueurs majuscules et minuscules. Mais lors de l'appel, nous pouvons transmettre un paramètre, deux paramètres ou trois paramètres à adPrint en séquence (vous pouvez même lui transmettre plus de 3 paramètres, cela n'a pas d'importance. Les résultats d'exécution sont les suivants :
function (){ 
print("invoke p by ()"); 
} 
func:function 
invoke p by ()
Copier après la connexion
<🎜). >


En fait, lorsque JavaScript gère les paramètres de fonction, c'est différent des autres langages compilés. Ce que l'interpréteur transmet à la fonction est une valeur interne de type tableau appelée arguments. Cela se fait lorsque l'objet fonction est généré. . est initialisé. Par exemple, lorsque nous transmettons un paramètre à adPrint, les deux autres paramètres ne sont pas définis. De cette façon, nous pouvons traiter ces paramètres non définis à l'intérieur de la fonction adPrint, qui peuvent être exposés à l'extérieur : nous pouvons traiter n'importe quel paramètre.

Discutons de ces arguments magiques à travers un autre exemple :
function adPrint(str, len, option){ 
var s = str || "default"; 
var l = len || s.length; 
var o = option || "i"; 
s = s.substring(0, l); 
switch(o){ 
case "u": 
s = s.toUpperCase(); 
break; 
case "l": 
s = s.toLowerCase(); 
break; 
default: 
break; 
} 

print(s); 
} 

adPrint("Hello, world"); 
adPrint("Hello, world", 5); 
adPrint("Hello, world", 5, "l");//lower case 
adPrint("Hello, world", 5, "u");//upper case
Copier après la connexion


La fonction sum n'a pas de paramètres formels explicites, et nous pouvons lui passer dynamiquement autant de paramètres. Alors, comment les référencer paramètres dans la fonction somme ? Ici, vous devez utiliser le pseudo tableau d'arguments. Les résultats en cours sont les suivants :
Hello, world 
Hello 
hello 
HELLO
Copier après la connexion



Portée de la fonction

Le concept de portée Cela se reflète dans presque tous les langages courants. En JavaScript, il a sa particularité : la portée de la variable en JavaScript est valide dans le corps de la fonction, et il n'y a pas de portée de bloc. En langage Java, on peut définir un bloc de boucle for comme ceci Variables d'indice dans :
function sum(){ 
var result = 0; 
for(var i = 0, len = arguments.length; i < len; i++){ 
var current = arguments[i]; 
if(isNaN(current)){ 
throw new Error("not a number exception"); 
}else{ 
result += current; 
} 
} 
return result; 
} 

print(sum(10, 20, 30, 40, 50)); 
print(sum(4, 8, 15, 16, 23, 42));//《迷失》上那串神奇的数字 
print(sum("new"));
Copier après la connexion


Et en JavaScript :
150 
108 
Error: not a number exception
Copier après la connexion


Les fonctions JavaScript s'exécutent dans la portée locale et les fonctions s'exécutent dans la portée locale Le corps peut accéder à ses variables externes (éventuellement de portée globale) et fonctions. La portée de JavaScript est la portée lexicale. La portée lexicale signifie que sa portée est déterminée lors de sa définition (analyse lexicale), et non lors de son exécution, comme dans l'exemple suivant :

public void method(){ 
for(int i = 0; i < obj1.length; i++){ 
//do something here; 
} 
//此时的i为未定义 
for(int i = 0; i < obj2.length; i++){ 
//do something else; 
} 
}
Copier après la connexion
<🎜. >Quel est le résultat en cours d'exécution ? Les débutants sont susceptibles d'obtenir cette réponse :

function func(){ 
for(var i = 0; i < array.length; i++){ 
//do something here. 
} 
//此时i仍然有值,及I == array.length 
print(i);//i == array.length; 
}
Copier après la connexion

Et le résultat correct devrait être :

var str = "global"; 
function scopeTest(){ 
print(str); 
var str = "local"; 
print(str); 
} 
scopeTest();
Copier après la connexion

Parce que dans la définition de la fonction scopeTest, la variable non déclarée str est accédée à l'avance puis la variable str est initialisée, le premier print(str) renverra une erreur non définie. Alors pourquoi la fonction n'accède-t-elle pas à la variable str externe à ce moment-là ? En effet, une fois l'analyse lexicale terminée, lors de la construction de la chaîne de portée, la variable var définie dans la fonction sera mise dans la chaîne, donc str est dans l'ensemble de la fonction scopeTest sont tous visibles (de la première ligne à la dernière ligne du corps de la fonction). Puisque la variable str elle-même n'est pas définie, le programme est exécuté séquentiellement et renverra un défini à la première ligne. valeur à str, donc la troisième ligne print(str) de la ligne renverra "local".

global 
local
Copier après la connexion

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Recommandé : Excellent projet de détection et de reconnaissance des visages open source JS Recommandé : Excellent projet de détection et de reconnaissance des visages open source JS Apr 03, 2024 am 11:55 AM

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

Liste d'évaluation des paramètres i9-12900H Liste d'évaluation des paramètres i9-12900H Feb 23, 2024 am 09:25 AM

Le i9-12900H est un processeur à 14 cœurs. L'architecture et la technologie utilisées sont toutes nouvelles, et les threads sont également très élevés. Le travail global est excellent et certains paramètres ont été améliorés et peuvent apporter aux utilisateurs une excellente expérience. . Examen de l'évaluation des paramètres du i9-12900H : 1. Le i9-12900H est un processeur à 14 cœurs, qui adopte l'architecture q1 et la technologie de processus de 24 576 Ko, et a été mis à niveau vers 20 threads. 2. La fréquence maximale du processeur est de 1,80 ! 5,00 GHz, ce qui dépend principalement de la charge de travail. 3. Par rapport au prix, il est très approprié. Le rapport qualité-prix est très bon et il convient très bien à certains partenaires qui ont besoin d'une utilisation normale. Évaluation des paramètres du i9-12900H et scores de performance

Contrôle de sécurité du type de paramètre de fonction C++ Contrôle de sécurité du type de paramètre de fonction C++ Apr 19, 2024 pm 12:00 PM

La vérification de sécurité des types de paramètres C++ garantit que les fonctions n'acceptent que les valeurs des types attendus via des vérifications au moment de la compilation, des vérifications au moment de l'exécution et des assertions statiques, évitant ainsi tout comportement inattendu et les plantages du programme : Vérification du type au moment de la compilation : le compilateur vérifie la compatibilité des types. Vérification du type d'exécution : utilisez Dynamic_cast pour vérifier la compatibilité des types et lancez une exception s'il n'y a pas de correspondance. Assertion statique : affirmer les conditions de type au moment de la compilation.

Conseils de développement PHP et JS : maîtrisez la méthode de création de graphiques en bougies boursières Conseils de développement PHP et JS : maîtrisez la méthode de création de graphiques en bougies boursières Dec 18, 2023 pm 03:39 PM

Avec le développement rapide de la finance sur Internet, l'investissement en actions est devenu le choix de plus en plus de personnes. Dans le trading d'actions, les graphiques en bougies sont une méthode d'analyse technique couramment utilisée. Ils peuvent montrer l'évolution des cours des actions et aider les investisseurs à prendre des décisions plus précises. Cet article présentera les compétences de développement de PHP et JS, amènera les lecteurs à comprendre comment dessiner des graphiques en bougies boursières et fournira des exemples de code spécifiques. 1. Comprendre les graphiques en bougies boursières Avant de présenter comment dessiner des graphiques en bougies boursières, nous devons d'abord comprendre ce qu'est un graphique en bougies. Les graphiques en chandeliers ont été développés par les Japonais

Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Jan 05, 2024 pm 06:08 PM

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

La relation entre js et vue La relation entre js et vue Mar 11, 2024 pm 05:21 PM

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.

Utilisation avancée des paramètres de référence et des paramètres de pointeur dans les fonctions C++ Utilisation avancée des paramètres de référence et des paramètres de pointeur dans les fonctions C++ Apr 21, 2024 am 09:39 AM

Les paramètres de référence dans les fonctions C++ (essentiellement les alias de variable, la modification de la référence modifie la variable d'origine) et les paramètres de pointeur (stockage de l'adresse mémoire de la variable d'origine, modification de la variable en déréférençant le pointeur) ont des utilisations différentes lors du passage et de la modification de variables. Les paramètres de référence sont souvent utilisés pour modifier les variables d'origine (en particulier les grandes structures) afin d'éviter une surcharge de copie lorsqu'elles sont transmises aux constructeurs ou aux opérateurs d'affectation. Les paramètres de pointeur sont utilisés pour pointer de manière flexible vers des emplacements de mémoire, implémenter des structures de données dynamiques ou transmettre des pointeurs nuls pour représenter des paramètres facultatifs.

Paramètres de la fonction vlookup et explication de leur signification Paramètres de la fonction vlookup et explication de leur signification Jan 09, 2024 pm 03:18 PM

Nous devons avoir utilisé la fonction vlookup lors de l'utilisation d'Excel. Il existe donc plusieurs fonctions de ce type et comment utiliser chaque fonction spécifiquement. À la connaissance de l'éditeur, il existe quatre fonctions vlookup, à savoir Lookup_value, Table_array, col_index_num et Range_lookup. Alors laissez-moi vous dire leur utilisation spécifique ~ La fonction vlookup a plusieurs paramètres et la signification de chaque paramètre. Les paramètres de la fonction vlookup incluent Lookup_value, Table_array, col_index_num et Range_lookup, un total de 4. 1.Recherche

See all articles