类型
原始类型
Null、Udnefiend、Boolean、Number、String、Symbol
特点:
- 不可变性
- 大小固定不变
- 空间较小
- 直接操作保存的数据,效率高
- 系统自动分配
比如
var str = 'ConardLi';
str += '6'
console.log(str); // ConardLi6
可以看出,是新开了一个空间
再如
var name = 'ConardLi';
var name2 = name;
name2 = 'code秘密花园';
console.log(name); // ConardLi;
对象类型
Object和特殊对象:Array、Function
特点:
- 可变
- 值大小不定,可动态调整
- 空间较大,效率低
- 无法直接操作内部存储,使用
引用地址存储
var obj = {name:'ConardLi'};
var obj2 = obj;
obj2.name = 'code秘密花园';
// obj中的name属性也被改了
console.log(obj.name); // code秘密花园
值传递和引用传递
ESMAScript中所有函数的参数都是按值传递的
按值传递:无论是原始类型还是对象类型,都是将参数复制一个副本到局部变量中,只不过原始类型是新的空间,引用类型的副本是指向内存中的地址的。