解释器
强制约定字符串在堆存储的数据是不可变的。相当于设置字符串在堆区存储的数据是只读的。
简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型。
简单数据类型在存储时,变量中存储的是值本身,因此叫做值类型。
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存放的内存地址,找到内存中的相应地址,将其中的值取出来返回