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

Explication détaillée des types de référence JavaScript et des compétences de base de types_javascript

WBOY
Libérer: 2016-05-16 15:21:29
original
1101 Les gens l'ont consulté

Il existe deux types de données en JavaScript : les types de base et les types de référence.

Les types de base sont simplement de simples segments de données.

Un type référence est un objet composé de plusieurs valeurs.

Lorsque nous effectuons une opération d'affectation, l'analyseur analysera d'abord si les données sont un type valeur ou un type référence.

Deux méthodes d'accès :

Valeurs de type de base : accès par valeur, l'opération est leur valeur réelle enregistrée ;

Valeur de type référence : accès par référence. Lors de l'interrogation, nous devons d'abord lire l'adresse mémoire de la pile, puis suivre les indices pour trouver la valeur stockée dans la mémoire du tas

Ce qui suit présentera respectivement ces deux types de données JavaScript.

1. Types de données de base :

Il existe six types de données de base en JavaScript : chaîne, nombre, booléen, symbole (nouveau dans ES6), nul et non défini.
Ces cinq types de données de base peuvent opérer directement sur les valeurs réelles stockées dans les variables.

L'exemple de code est le suivant :

var a=10;
var b=a;
b=20;
console.log(a);
Copier après la connexion

Le code ci-dessus est une opération d'affectation simple. Donnons une brève introduction ci-dessous.

(1). Tout d’abord, les nombres sont le type de données de base.
(2) .var b=a, cette opération d'affectation copie en fait les données de a puis les affecte à la variable b.
(3).a et b sont complètement indépendants.
(4).b=20, modifier la valeur de la variable b n'affectera pas la valeur de la variable a.

L'icône est la suivante :

Mémoire de pile


2. Données de type référence :

En JavaScript, les données de type référence sont stockées dans la mémoire tas, mais vous ne pouvez pas accéder directement à l'emplacement dans l'espace mémoire tas et exploiter l'espace mémoire tas.
Vous ne pouvez opérer que sur l'adresse de référence de l'objet dans la mémoire pile. Par conséquent, les données de type référence stockées dans la mémoire pile sont en fait l'adresse de référence de l'objet dans la mémoire tas. Grâce à cette adresse de référence, vous pouvez retrouver rapidement l'objet stocké dans la mémoire tas.

Exemple de code :

var obj1=new Object();
var obj2=obj1;
obj2.name="脚本之家";
console.log(obj1.name);
Copier après la connexion

Décomposons le code ci-dessus.

(1).var obj1=new Object(), il s'agit de créer un objet, qui est une donnée de type référence. La variable obj1 stocke l'adresse de l'objet dans la mémoire tas.
(2) .var obj2=obj1. Cette opération d'affectation copie en fait l'adresse de stockage de l'objet dans la mémoire tas dans la variable obj2. Autrement dit, les deux variables stockent l'adresse mémoire pointant vers l'objet réel et pointent vers le même objet. .
(3).obj2.name="Script Home", ajoute un attribut à l'objet.
(4).console.log(obj1.name), affiche "Script Home" car les deux variables pointent vers le même objet

.

L'icône est la suivante :


String est un type de données de base spécial

Dans de nombreux langages, String est représenté sous forme d'objets, mais cette tradition n'est pas suivie dans ECMAScript. String est utilisé comme type de données de base, mais c'est un type de base relativement spécial.

Il semble que String devrait être utilisé comme type de référence, mais en fait ce n'est pas le cas car ce n'est pas un objet. Ensuite, il semble qu'il devrait s'agir d'un type de données de base et qu'il devrait être exploité en passant par valeur.

Regardez l'exemple ci-dessous :

var stra = "这是一个字符串";
var strb = stra;
stra = "这是另外一个字符串";
console.log(strb); // 这是一个字符串 
Copier après la connexion

Nous voyons dans l'exemple ci-dessus qu'il semble que stra copie une copie vers strb via un transfert de valeur. Lorsque str change, strb ne change pas. Il semble que nous puissions déjà conclure que String est un type de données de base.

Cependant, comme String peut avoir n'importe quelle longueur et est transmis par valeur, l'efficacité d'affichage de la copie des octets un par un est encore très faible. Il semble que String puisse également être utilisé comme type de référence.

Regardez l'exemple ci-dessous :

var a = "myobject";
a.name = "myname";
console.log(a.name); // undefined 
Copier après la connexion

Montre que String ne peut pas être traité comme un objet. En fait, la chaîne en JavaScript ne peut pas être modifiée et JavaScript ne fournit aucune méthode ou syntaxe pour modifier les chaînes.

var a = "myobject";
a = a.substring(3,5)
console.log(a); // bj 
Copier après la connexion

Rappelez-vous qu'en faisant cela, la chaîne "monobjet" n'est pas modifiée, seul a fait référence à une autre chaîne "bj", et "monobjet" est recyclé.

On peut donc dire que String n'est pas réellement conforme aux deux classifications de types de données ci-dessus. C'est un type spécial avec deux attributs entre les deux.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!