types de données JavaScript se divisent en deux catégories: les types primitifs et les types d'objets.
- Les types primitifs comprennent: nombre, chaîne, booléen, underfine , null
appelé souvent les types de données de base, ces valeurs d' origine ne peuvent être modifiés, par rapport à la valeur initiale de la valeur de comparaison est: seulement quand ils sont égaux à la valeur qu'ils sont égaux.
Les valeurs initiales stockées dans la pile (la pile de données): affectation entre la pile de mémoire et de la mémoire pile est une copie, et non pas une mémoire, indépendamment les uns des autres.
var a = 111 ;
var b = a ;//拷贝一份a里的值赋给b。这时b里放的值和a里的值是两个没关系值,换句话说就是副本
a = 222;
console.log(b); //打印111;即b的值不会因a的值改变而改变
- Type de l' objet : objet (js définit également deux objets spéciaux: Array Tableau de fonction et la fonction)
communément appelé un type de référence d'objet, une valeur de référence est variable et leurs valeurs ne sont pas Comparaison: même si les deux objets contiennent le même attributs et la même valeur, ils ne sont pas égaux.
Valeur de référence stockée dans un tas (données tas): la pile sera la première dans les applications spatiales (var), une valeur de référence est mis dans le contenu du tas, puis mis dans l'adresse mémoire de tas mémoire de la pile, trouver le tas de confort correspondant contenu, de sorte que la pile est mis en place. Alors! Entre la valeur de référence de copie, une copie de la dernière adresse, est une valeur, il aura une incidence sur l'autre.
var arr = [1, 2];//
var arr1 = arr; //先在栈内申请空间arr1,拷贝arr赋给arr1,注意这里拷贝的是地址!!地址指向的都是同一块堆内存!(相当于两个一样的钥匙即地址,开一个门即对应的堆内存)
arr.push(3);
console.log(arr1);//打印[1,2,3];
//即变量arr通过方法改变值时,是改变了堆中内容,因此arr1的值也会相应的改变。
arr = [4, 5]; //这时不是在原来的基础上改值了,而是重新申请了一块新的堆空间,让arr指向新的空间了
console.log(arr1);//所以还是打印[1,2,3];