JS基本类型和引用类型赋值的区别

JavaScript018

JS基本类型和引用类型赋值的区别,第1张

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存放的内存地址,找到内存中的相应地址,将其中的值取出来返回

JavaScript中的值分为2大类:基本类型和引用类型。每种类型下面又分为5种类型。

基本类型:

数字类型:Number;字符串类型:String;布尔类型:Boolean(true和false);Undefined;Null。

引用类型:

函数、数组、日期、正则、错误。

注意:所有的引用类型都是对象,也就是Object对象下的一个类。

在将一个值赋给变量时,解析器必须确定这个值是基本类型值还是引用类型值。

对基本类型,是按值访问的,即通过值复制的方式来赋值和传递。

对引用类型,是按引用访问的,即通过引用复制的方式赋值和传递。在操作对象时,实际上是在操作对象的引用,而不是实际的对象。

你说的是值类型和引用类型。

值类型都有一个独立的内存区域保存自己的值。

引用类型指向的是内存中的地址。

var ary1=[] // 第一次定义,分配内存a

var ary2=ary1// ary2 指向了内存a

ary2[0] =123// 其实就是改变了ary1[0]

值类型:

var a =1,b=a// 这时 b=1

b=3 // b=3,a还是1,因为独立的内存区域给B