Explication des problèmes courants liés aux fonctions JS
Nous rencontrons souvent des problèmes de fonction Javascript lors de nos études, et cet article les expliquera.
Quelle est la différence entre la déclaration de fonction et l'expression de fonction
L'expression de fonction et l'instruction de déclaration de fonction contiennent le même nom de fonction et créent toutes deux de nouveaux objets de fonction. Leur différence réside principalement dans la promotion des variables. sont différents
Le nom de fonction déclaré par la fonction est une variable, et la variable pointe vers l'objet fonction. La promotion variable est le corps variable et fonctionnel de la fonction.
L'expression de fonction est affectée via var, et la fonction entière est affectée à une nouvelle variable. La variable est promue à un nouveau nom de variable et le code d'initialisation de la fonction restera dans sa position d'origine.
Qu'est-ce que la pré-déclaration de variable ? Qu'est-ce que la pré-déclaration d'une fonction ?
La pré-déclaration d'une variable
console.log(a);var a = 1; 结果为underfined
La pré-déclaration d'une variable prendra par défaut ce code :
var a; //Préfixe de déclaration des variables console.log(a);
a = 1;
Préfixe de déclaration de fonction
a()function a(){console.log ("hello") }
Préfixe de déclaration de fonction Le code par défaut est :
function a(){ //将函数声明提升console.log ("hello") }a() arguments 是什么
arguments est un objet de type tableau, qui stocke les paramètres transmis lorsque la fonction est exécutée. Vous pouvez utiliser des arguments dans la fonction pour obtenir les paramètres de toutes les fonctions.
Le code suivant :
function say(name,sex,age){ console.log(arguments); }console.log('name:jiuyi',"sex:男",'age:54') 结果为:"name:jiuyi""sex:男""age:54"
Comment implémenter la surcharge de fonctions
Il n'y a aucun concept de surcharge de fonction dans JS La nouvelle fonction suivante écrasera la fonction précédente du même nom. , même si les paramètres sont différents.
function p(a,b,c) { console.log(a+b+c); } function p(a,b) { console.log(a+b); } console.log(p('hello','jiuyi','yes')); console.log(p('hello')) 结果为: "hellojiuyi" "helloundefined"
Comme le montre la figure ci-dessus, cette dernière fonction P couvre la fonction P supérieure.
Quelle est l'expression de la fonction d'exécution immédiate ? Que fait-il ?
Exécuter immédiatement une expression de fonction signifie joindre la déclaration de fonction entière avec () pour devenir une expression de fonction, puis suivre les paramètres, la fonction sera exécutée immédiatement.
function ( ){ }La déclaration de fonction est convertie en ( function (){ }) ( )
Fonction :
Génère sa propre portée et des variables locales indépendantes, sans être perturbé par la promotion de variable. Réduisez la possibilité de conflits entre les variables internes et les variables externes. Les variables seront détruites une fois exécutées.
Quelle est la chaîne de portée d'une fonction ?
Dans JS, elle est divisée en variables globales et en variables locales. Les variables globales sont accessibles à l'intérieur de la fonction, mais les variables locales à l'intérieur de la fonction ne le sont pas. être accessible en dehors de la fonction. Dans les variables Lorsqu'il est à l'intérieur d'une fonction, il recherchera d'abord si la variable est définie dans cette portée. Sinon, il recherchera au niveau suivant jusqu'à ce qu'il trouve la variable requise. S'il n'est pas trouvé dans la variable globale, une erreur sera signalée. Essayez d'utiliser des variables locales pour éviter les interférences avec des variables externes.
1. Sortie du code
function getInfo(name, age, sex){ console.log('name:',name); console.log('age:', age); console.log('sex:', sex); console.log(arguments); //代表实际参数,所以输出实际参数内容 arguments[0] = 'valley';//name赋值为valley console.log('name', name);//所以这里参数输出为valley } getInfo('hunger', 28, '男'); getInfo('hunger', 28); getInfo('男'); 结果为: name: hunger age: 28 sex: 男 ["hunger", 28, "男"] name valley name: hunger age: 28sex: undefined ["hunger", 28] name valley name: 男 age: undefined sex: undefined["男"] name valley
2. Écrivez une fonction qui renvoie la somme des carrés des paramètres
function sumOfSquares(){ var x = 0; for(var i = 0;i<arguments.length;i++){ x = x + arguments[i]*arguments[i] } console.log(x) } sumOfSquares(2,3,4); sumOfSquares(1,3); 结果为:2910
3. le code suivant ? Pourquoi
console.log(a); //La sortie est sous-définie, car JS promouvra les variables globales, a est uniquement déclaré mais non attribué var a = 1; est signalé car b Non déclaré Non attribué
4. Quel est le résultat du code suivant ? Pourquoi le résultat de
sayName('world'); sayAge(10); function sayName(name){ console.log('hello ', name); } var sayAge = function(age){ console.log(age); };
:
hello world //Parce que la fonction de préfixe de déclaration de fonction sayName(name) est promue en haut, sayName a une déclaration et un contenu. Rapport d'erreur //Parce que la déclaration de variable précédée de var sayAge est élevée et que la fonction sayAge n'est pas déclarée, une erreur est signalée.
5. Quelle est la sortie du code suivant ? Pourquoi
function fn(){} var fn = 3; console.log(fn); 相当于: var fn; function fn(){} ; fn = 3; console.log(fn); //所以输出为3
6. La sortie du code suivant ? Pourquoi la sortie de
function fn(fn2){ console.log(fn2); //输出 function fn2(){ console.log('fnnn2');} var fn2 = 3; console.log(fn2); //输出3 console.log(fn); //输出 function fn(fn2){ console.log(fn2); var fn2 = 3; console.log(fn2); console.log(fn); function fn2(){ console.log('fnnn2'); } } fn(10); function fn2(){ console.log('fnnn2'); //不输出,函数未调用 } } fn(10); 相当于:var fn2; //声明前置function fn(fn2){ function fn2(){ //函数声明前置 console.log('fnnn2'); //此函数不输出,未调用 } console.log(fn2); // 调用的其实是函数fn2 fn2 = 3; console.log(fn2); // 此时fn2已被赋值为3 console.log(fn); //调用的其实是fn整个函数} fn(10);
7 donne-t-elle le code suivant ? Pourquoi la sortie de
var fn = 1; function fn(fn){ console.log(fn); } console.log(fn(fn)); //结果报错,变量提升,fn为1,直接调用1出错结果相当于: var fn; function fn(fn){ console.log(fn); } fn = 1; console.log(fn(fn));
8 donne-t-elle le code suivant ? Pourquoi
console.log(j); //变量提升输出undefined console.log(i); //变量提升输出undefinedfor(var i=0; i<10; i++){ //i循环后结果为10var j = 100; } console.log(i); //输出10 console.log(j); //输出100
9. La sortie du code suivant ? Pourquoi
fn(); var i = 10; var fn = 20; console.log(i); function fn(){ console.log(i); var i = 99; fn2(); console.log(i); function fn2(){ i = 100; } } 代码相当于:var i; var fn;function fn(){ var i ; function fn2(){ i = 100; } console.log(i); //只有声明未赋值输出underfined i = 99; fn2(); //经过运行I=100 console.log(i); //输出100} fn(); i = 10; fn = 20;console.log(i); //输出10
10. La sortie du code suivant ? Pourquoi le code
var say = 0; (function say(n){ console.log(n); if(n<3) return; say(n-1); }( 10 )); console.log(say);
est-il équivalent à : var say;
(function say(n){ console.log(n); if(n<3) return; say(n-1); }( 10 )); say = 0; console.log(say); //输出为0结果为:10987654320
function say est une fonction d'exécution immédiate, et les résultats d'exécution sont 10, 9, 8, 7, 6, 5, 4, 3, 2, et enfin say se voient attribuer une valeur de 0, donc la sortie est 0
Cet article explique les problèmes courants liés aux fonctions js. Pour plus de contenu connexe, veuillez prêter attention à. le site Web PHP chinois.
Recommandations associées :
Explication des fonctions liées à JavaScript
Explication des événements et DOM jquery
Quelques bases modulaires associées
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!

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

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

Sujets chauds

Le langage Go propose deux technologies de création de fonctions dynamiques : la fermeture et la réflexion. les fermetures permettent d'accéder aux variables dans la portée de la fermeture, et la réflexion peut créer de nouvelles fonctions à l'aide de la fonction FuncOf. Ces technologies sont utiles pour personnaliser les routeurs HTTP, mettre en œuvre des systèmes hautement personnalisables et créer des composants enfichables.

Dans la dénomination des fonctions C++, il est crucial de prendre en compte l’ordre des paramètres pour améliorer la lisibilité, réduire les erreurs et faciliter la refactorisation. Les conventions courantes d'ordre des paramètres incluent : action-objet, objet-action, signification sémantique et conformité de la bibliothèque standard. L'ordre optimal dépend de l'objectif de la fonction, des types de paramètres, de la confusion potentielle et des conventions du langage.

La clé pour écrire des fonctions Java efficaces et maintenables est la suivante : restez simple. Utilisez un nom significatif. Gérer des situations particulières. Utilisez une visibilité appropriée.

1. La fonction SOMME permet de sommer les nombres d'une colonne ou d'un groupe de cellules, par exemple : =SOMME(A1:J10). 2. La fonction MOYENNE permet de calculer la moyenne des nombres dans une colonne ou un groupe de cellules, par exemple : =AVERAGE(A1:A10). 3. Fonction COUNT, utilisée pour compter le nombre de nombres ou de texte dans une colonne ou un groupe de cellules, par exemple : =COUNT(A1:A10) 4. Fonction IF, utilisée pour effectuer des jugements logiques basés sur des conditions spécifiées et renvoyer le résultat correspondant.

Les avantages des paramètres par défaut dans les fonctions C++ incluent la simplification des appels, l’amélioration de la lisibilité et l’évitement des erreurs. Les inconvénients sont une flexibilité limitée et des restrictions de dénomination. Les avantages des paramètres variadiques incluent une flexibilité illimitée et une liaison dynamique. Les inconvénients incluent une plus grande complexité, des conversions de types implicites et des difficultés de débogage.

Les avantages des fonctions renvoyant des types référence en C++ incluent : Améliorations des performances : le passage par référence évite la copie d'objets, économisant ainsi de la mémoire et du temps. Modification directe : L'appelant peut modifier directement l'objet de référence renvoyé sans le réaffecter. Simplicité du code : le passage par référence simplifie le code et ne nécessite aucune opération d'affectation supplémentaire.

La différence entre les fonctions PHP personnalisées et les fonctions prédéfinies est la suivante : Portée : les fonctions personnalisées sont limitées à la portée de leur définition, tandis que les fonctions prédéfinies sont accessibles tout au long du script. Comment définir : les fonctions personnalisées sont définies à l'aide du mot-clé function, tandis que les fonctions prédéfinies sont définies par le noyau PHP. Passage de paramètres : les fonctions personnalisées reçoivent des paramètres, tandis que les fonctions prédéfinies peuvent ne pas nécessiter de paramètres. Extensibilité : des fonctions personnalisées peuvent être créées selon les besoins, tandis que les fonctions prédéfinies sont intégrées et ne peuvent pas être modifiées.

La gestion des exceptions en C++ peut être améliorée grâce à des classes d'exceptions personnalisées qui fournissent des messages d'erreur spécifiques, des informations contextuelles et effectuent des actions personnalisées en fonction du type d'erreur. Définissez une classe d'exception héritée de std::exception pour fournir des informations d'erreur spécifiques. Utilisez le mot-clé throw pour lancer une exception personnalisée. Utilisez Dynamic_cast dans un bloc try-catch pour convertir l'exception interceptée en un type d'exception personnalisé. Dans le cas réel, la fonction open_file lève une exception FileNotFoundException. La capture et la gestion de l'exception peuvent fournir un message d'erreur plus spécifique.
