标签:
5种基本类型:Undefined、Null、Boolean、Number和String,这5种基本类型是按值访问的,因为可以操作保存在变量中的实际的值。
引用类型:可能由多个值(这里的“多个值”应该是指对象和方法)构成的对象,是保存在内存中的。
当复制基本类型值的变量时,会在变量对象上创建一个新值,然后把该值复制到为新变量分配的位置上。
当复制引用类型值的变量,也就是复制某个对象时,复制的是指针,复制结束后,两个变量实际上将引用同一个对象。
var obj1 = new Object(); var obj2 = obj1; obj1.name = ‘Natsu12‘; console.log(obj2.name); // ‘Natsu12‘
题外话:当复制某个对象时,操作的是对象的引用;当在为对象添加属性时,操作的是实际的对象。
函数传递参数都是按值传递的(不是按引用传递),也就是说把函数外部的值传进函数的参数里,相当于把值从一个变量复制到另一个变量。
但由于复制变量也分为 -> 复制基本类型值 / 引用类型值,所以如果传的参数是一个对象,则对参数的操作还是能反应到函数的外部。
但是请注意:这时候参数依然是按值传递的,而非按引用传递的。
《JavaScript高级程序设计》第4章 变量、作用域和内存问题
标签:
原文地址:http://www.cnblogs.com/natsu12/p/4779483.html