Maison interface Web js tutoriel La relation entre les variables JavaScript, le transfert de valeur, le transfert d'adresse et settings_jquery

La relation entre les variables JavaScript, le transfert de valeur, le transfert d'adresse et settings_jquery

May 16, 2016 pm 03:48 PM
javascript 传值 参数 变量

Laissez d'abord sécher la récolte pendant un moment :

Les variables 1.javascript contiennent deux types de valeurs, l'une est une valeur de type référence et l'autre est une valeur de type de base. Les types de référence incluent : Array, Object, Function (on peut comprendre que les types non basiques sont des types de référence : undefined, null, string, boolean, number

) ;

2. Le mécanisme de transmission des paramètres de fonction consiste à copier la valeur de la variable.

Le livre dit : "Copier la valeur en dehors de la fonction vers le paramètre à l'intérieur de la fonction équivaut à copier la valeur d'une variable vers une autre variable. Le transfert des types de base est la même que la copie des variables de type de base, et le transfert des types de référence C'est la même chose que la copie de la variable de type référence "

.

" Lorsqu'une variable copie une valeur d'un type référence, une copie de la valeur stockée dans l'objet variable est également copiée dans l'espace alloué à la nouvelle variable. La différence est que la copie de la valeur est en fait un pointeur , et ce pointeur pointe vers un objet stocké dans le tas. Une fois l'opération de copie terminée, les deux variables feront en fait référence au même objet. Par conséquent, la modification de l'une des variables affectera l'autre variable.

[Remarque : copier la valeur du type de référence est le seul moyen de transmettre l'adresse]

3. Les paramètres sont en fait des variables locales de la fonction.

-------------------------------------------------------------- --- ----------------

Explication des concepts de base :

Transférer la valeur : transférer la valeur de A à B, modifier B, A ne changera pas en conséquence, B stocke la même valeur que A

Transférer l'adresse : transférez l'adresse de A à B, modifiez B et A changera en même temps. B ne stocke que l'adresse de A (semblable à un raccourci informatique).

Une donnée de type valeur est stockée dans une variable sur la pile. Autrement dit, en allouant de l'espace mémoire dans la pile et en stockant directement la valeur contenue, la valeur représente les données elles-mêmes. Les données de type valeur ont une vitesse d’accès plus rapide.

Une donnée avec un type référence ne réside pas sur la pile, mais est stockée dans le tas. Autrement dit, l'allocation d'espace mémoire dans le tas ne stocke pas directement la valeur contenue, mais pointe vers la valeur à stocker, et sa valeur représente l'adresse pointée. Lorsque vous accédez à des données avec un type référence, vous devez vérifier le contenu de la variable sur la pile, qui fait référence à des données réelles dans le tas. Les données de type référence ont une taille de stockage plus grande et une vitesse d'accès inférieure à celle des données de type valeur.

-------------------------------------------------------------- --- ----------------

Voici trois questions.

[Question 1] :

Pourquoi l'extérieur n'est-il pas perturbé après l'exécution de la fonction change(a) ?

<script>
var a = [1, 2, 3];
function change(a) {
 console.log(a);//[1,2,3]
 a = 2;   //传值
 console.log(a);//2
}
change(a);
console.log(a);  //[1,2,3] 
</script>

Copier après la connexion
Réponse à la question 1 : Parce que le processus d'exécution de change(a) est comme ceci, une fois que l'objet a (tableau) est d'abord passé dans change, il est copié dans le paramètre a de change. Alors a=2 est une instruction d'affectation et devient passe par valeur. À l’heure actuelle, a=2 est un type valeur et n’implique pas la question de l’adresse de référence. Cela n'affecte donc pas le a externe.

[Question 2] :

Pourquoi l'extérieur est-il perturbé après l'exécution de la fonction change(a) ?

<script>
 var a = [1, 2, 3];
 function change() { 
  a = 2;//传值
 }
 change();
 console.log(a);  //2 
</script>

Copier après la connexion
Réponse à la question 2 : lors de l'exécution de change(), la fonction recherche la chaîne de portées dans son propre environnement d'exécution. L'objet d'activation ne contient pas la variable a, elle recherche donc vers le haut le long de la chaîne de portées pour trouver l'exécution globale. environnement, la variable a est trouvée, donc à ce moment le a interne de la fonction et le a externe sont la même adresse dans la mémoire. Naturellement, si le a interne de la fonction change, l'externe changera également.

Analyse : La différence entre la question 2 et la question 1 est que la question 2 n'introduit pas de paramètres, elle n'implique donc pas de copie de variables.

[Question 3] :

Pourquoi l'extérieur est-il perturbé après l'exécution de la fonction change(a) ?

<script>
 var a = [1, 2, 3];
 function change(b) { 
  b[0] = 2;
 }
 change(a);
 console.log(a);  //[2,2,3]
</script>

Copier après la connexion
Réponse à la question 3 : Ceci est très similaire à la question 1. La seule différence est que a=2 est remplacé par b[0]=2. J'étais confus au début. N'est-ce pas une copie ? Le paramètre b doit être une valeur copiée, comment peut-il affecter l'extérieur a ?

En effet, lorsque la fonction de changement est exécutée, le paramètre b est la valeur copiée de a. Parce que a est un type référence, à l’intérieur de la fonction, b et a accèdent à un objet d’adresse par référence. L'occurrence de b[0]=2 n'affecte pas le fait que b et a font référence au même objet à l'intérieur de la fonction.

[Question 4] :

Pourquoi l'extérieur n'est-il pas perturbé après l'exécution de la fonction change(a) ?

 var a = [1, 2, 3];
 function change(b) { 
  console.log(b);//[1,2,3]
  b=2;
  b[0] = 2;
 }
 change(a);
 console.log(a);  //[1,2,3]

Copier après la connexion
Réponse à la question 4 : Le processus d'exécution de change(b) est le suivant : l'objet a est passé dans la fonction de changement, et la valeur et l'adresse sont copiées dans b. La phrase b=2, b devient un type valeur à ce moment-là et n'implique pas la question de la référence d'adresse. La phrase b[0]=2 n'a en fait aucun sens après cela, car b n'est plus un tableau à ce moment-là, et naturellement, il n'a pas de méthode d'indexation comme b[0]. Par conséquent, la relation de référence d’adresse entre b et a disparaît en fait après b=2. A ce moment, le a externe est toujours [1,2,3];

Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.

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

Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
4 Il y a quelques semaines By DDD

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)

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

Que sont les variables d'instance en Java Que sont les variables d'instance en Java Feb 19, 2024 pm 07:55 PM

Les variables d'instance en Java font référence aux variables définies dans la classe, et non dans la méthode ou le constructeur. Les variables d'instance sont également appelées variables membres. Chaque instance d'une classe possède sa propre copie de la variable d'instance. Les variables d'instance sont initialisées lors de la création de l'objet et leur état est enregistré et conservé tout au long de la durée de vie de l'objet. Les définitions de variables d'instance sont généralement placées en haut de la classe et peuvent être déclarées avec n'importe quel modificateur d'accès, qui peut être public, privé, protégé ou le modificateur d'accès par défaut. Cela dépend de ce que nous voulons que ce soit

Comment obtenir des variables de la méthode PHP en utilisant Ajax ? Comment obtenir des variables de la méthode PHP en utilisant Ajax ? Mar 09, 2024 pm 05:36 PM

L'utilisation d'Ajax pour obtenir des variables à partir de méthodes PHP est un scénario courant dans le développement Web. Grâce à Ajax, la page peut être obtenue dynamiquement sans actualiser les données. Dans cet article, nous présenterons comment utiliser Ajax pour obtenir des variables à partir de méthodes PHP et fournirons des exemples de code spécifiques. Tout d’abord, nous devons écrire un fichier PHP pour gérer la requête Ajax et renvoyer les variables requises. Voici un exemple de code pour un simple fichier PHP getData.php :

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.

Carte mentale de la syntaxe Python : compréhension approfondie de la structure du code Carte mentale de la syntaxe Python : compréhension approfondie de la structure du code Feb 21, 2024 am 09:00 AM

Python est largement utilisé dans un large éventail de domaines grâce à sa syntaxe simple et facile à lire. Il est crucial de maîtriser la structure de base de la syntaxe Python, à la fois pour améliorer l’efficacité de la programmation et pour acquérir une compréhension approfondie du fonctionnement du code. À cette fin, cet article fournit une carte mentale complète détaillant divers aspects de la syntaxe Python. Variables et types de données Les variables sont des conteneurs utilisés pour stocker des données en Python. La carte mentale affiche les types de données Python courants, notamment les entiers, les nombres à virgule flottante, les chaînes, les valeurs booléennes et les listes. Chaque type de données a ses propres caractéristiques et méthodes de fonctionnement. Opérateurs Les opérateurs sont utilisés pour effectuer diverses opérations sur les types de données. La carte mentale couvre les différents types d'opérateurs en Python, tels que les opérateurs arithmétiques, ratio

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

Pratique d'utilisation de jQuery : plusieurs façons de déterminer si une variable est vide Pratique d'utilisation de jQuery : plusieurs façons de déterminer si une variable est vide Feb 27, 2024 pm 04:12 PM

jQuery est une bibliothèque JavaScript largement utilisée dans le développement Web. Elle fournit de nombreuses méthodes simples et pratiques pour exploiter les éléments d'une page Web et gérer les événements. Dans le développement réel, nous rencontrons souvent des situations où nous devons déterminer si une variable est vide. Cet article présentera plusieurs méthodes courantes d'utilisation de jQuery pour déterminer si une variable est vide et joindra des exemples de code spécifiques. Méthode 1 : utilisez l'instruction if pour déterminer varstr="";if(str){co

Comment obtenir facilement le code d'état HTTP en JavaScript Comment obtenir facilement le code d'état HTTP en JavaScript Jan 05, 2024 pm 01:37 PM

Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service

See all articles