4.1 基本类型和引用类型的值
- 基本数据类型是按值访问,操作保存在变量中的实际的值
- 引用类型的值是保存在内存中的对象,JS不允许直接访问内存中的位置,不能直接操作对象的内存空间。为此,引用类型的值是按引用访问的
4.1.3 传递参数
ECMAScript中的所有函数的参数都是按值传递function setName(obj){
obj.name = "name";
obj = new Object();
obj.name = "wa";
}
var person = new Object();
setName(person);
console.log(person.name) // name
如果person是按引用传递的,那么person就会自动被修改为其name属性值为”wa”的新对象,但是,最后显示的值仍然是name,这说明即时在函数内部修改了参数的值,但原始的引用仍然保持不变.实际上,当在函数内部重写obj时,这个变量引用是一个局部对象。而局部变量会在函数调用完毕时出栈立即被销毁释放内存.
小结:
- 基本类型值在内存中存放在栈内存中;
- 引用类型的值是对象,保存在堆内存中;