1 变量:变量声明和变量赋值
var c = 10;
上面的其实应该拆分为两个步骤,首先声明一个变量a(就像在内存里面给a分配一个房间)。然后再给a赋值为10,(就像是给这个房间分配人去住)。
2 变量之间的赋值
- 由于javascript是动态类型的解释型的语言,变量的类型是由值确定的,不像java里面一样用integer,string类型来定义变量的类型。
- 给变量赋值的数据分为两种:
原始值
和引用值
;
原始值类型 | Number | String | Boolean | Undefined | Null |
---|---|---|---|---|---|
引用值类型 | array | Object | function | data | RegExp … |
- 原始值(又称不可改变的原始值)
原始值 (存在栈stack里面 栈内存之间的赋值是拷贝(副本),之间互相不影响)例如
var a = 10;
b = a;
a = 90;
document.write(b);//10
- 引用值 (存在堆heap里面(散列结构) 堆内存
在栈内存里面放入堆内存的地址,方便找到堆内存里面的内容,
这个时候栈内存之间的赋值是拷贝的是存放内容的堆的地址,改变堆的内容,相互之间会影响
var arr = [1,2];
var arr1 = arr;
arr .push(3);
document.write(arr);//[1,2,3]
document.write(arr1);//[1,2,3]
衍生:
var arr = [1,2];
var arr1 = arr;
arr = [1,3]
document.write(arr);//[1,3]
document.write(arr1);//[1,2]
首先,引用型的变量栈内存之间的赋值是拷贝的是存放内容的堆的地址,arr和arr1都指向同一块堆中的内存地址。