JS的string是怎么存储的?

JavaScript010

JS的string是怎么存储的?,第1张

字符串数据被存储到堆,然后把字符串的引用地址存储在字符串变量中。同时为了避免错误操作,js

解释器

强制约定字符串在堆存储的数据是不可变的。相当于设置字符串在堆区存储的数据是只读的。

简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型。

简单数据类型在存储时,变量中存储的是值本身,因此叫做值类型。

string、number、boolean、undefined、null

null是特殊存在,返回的是object,如果要创建空对象,可以用null。

用new创建的都是复杂数据类型

(1)栈:由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作系统类似于数据结果中的栈。

简单数据类型存放到栈里面

(2)堆:一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。

复杂数据类型存放到堆里面

JS基本数据类型的变量存放的是基本类型数据的实际值;而引用数据类型的变量保存对它的引用,即指针。

JS基本数据类型:null undefined number boolean

string比较特殊

引用数据类型:function object array

var a = 11

var b = 1

b = 12

console.log(a)//11 a的值不会随b值得改变而改变

var a = [1,2,3]

var b = a

a[0] = 2

console.log(b[0]) //2, b的值随着a的值改变而改,因为他们指向同一个内存地址

var a = [1,2,3]

var b = a

b = [11, 12, 13]//b指向了另一个内存地址,与a断开关联

a[0] = 2

console.log(b[0]) //11,b的值不随a的值改变而改变

比如说 var a = 11是基本数据类型,因此变量a存放的就是1这个值

var b = [1,2,3],[1,2,3]是引用数据类型,[1,2,3]是放在内存中的,而变量b存放的是[1,2,3]的地址,而不是[1,2,3]这个值

当使用b这个变量时,js解释器会通过b存放的内存地址,找到内存中的相应地址,将其中的值取出来返回