传值:
当一个数据是通过值被操作的,那么,所关系到的是数据的值。在赋值过程中,对实际的值做一个拷贝,这份拷贝被存储到一个变量、对象属性或者数组元素中。拷贝的值和原来的值是分别存储的两份完全独立的值,即你变我不变。当进行比较时,比较的是两个独立的值(通常逐字节比较)。在JavaScript中基本数据类型通过传值来操作。
传址:
使用这种方法,数值只有一份真实的拷贝,被操作的是对该值的引用(地址)。当该值通过一个地址发生了变化,这个改变也会通过原始地址表现出来,即你变我也变。在进行比较时,比较的是两个引用,以判断它们引用的是否是同一个数值。对两个不同的数值的引用不相等,即使这两个数值是相同的。在JavaScript中引用类型通过传址来操作。
注意:字符串是比较特殊的存在,并不完全符合基本类型和引用类型的分类法。