基本类型值和引用类型值
首先来说一下JS中的数据类型:基本类型值和引用类型值。
基本类型值:就是简单的数据段。
引用类型值:指那些可能由多个值构成的对象。
Null,Undefined,Boolean,String,Number,这五个都是基本类型,都是按值访问的,因为可以直接操作保存在变量中的实际的值。
而引用类型值是存在内存中的对象。而js不允许直接访问内存中的位置。所以你在操作对象时,是在操作对象的引用而不是实际的对象。
复制变量值
现在再来说一下复制变量值:
复制基本类型值示例:
var num1 = 5;
var num2 = num1;
如果对于基本类型值,复制变量值,会生成一个新的值,这两个是完全独立的。你可以对它们进行任何操作而不会互相影响。
复制引用类型值示例:
var obj1 = new Object();
var obj2 = obj1;
obj1.name = 'mogu';
console.log(obj2.name);//mogu
复制引用类型值,复制的其实是引用,变量obj1
和obj2
引用的都是同一个对象,所以你对任一变量进行操作,另一个变量的值也会变化。
综上:传值就是把自己的值传给另一个变量,但是大家相互独立,互不影响,对其中一个做任何操作都不会影响另一个变量的值。
传址就是把自己的‘地址’给另一个变量,你俩的操作都是对这一个地址,互相影响,所以不管对谁进行操作,你俩总是一样的。