上回书说道,基本变量和引用变量在内存的概念上保存值得方式是不一样的,他们不仅仅有这点不一样,在从一个变量向另一个变量赋值基本变量和引用变量的处理也是不一样的,从一个变量向另一个变量复制基本类型的值,会在变量上创建一个新值,然后把该值复制到新的变量位置上

在这段赋值的动作中a和b是两个完全独立的值,两者除了赋值和被赋值之外没有任何关系,换句话来说,你对a进行任何操作b不会有任何改变

当一个变量向另一个变量复制引用类型的值得时候,同样也会将存储在变量对象中的值复制一份放到位新变量分配的空间中。不同的是,
这个值得副本实际上是一个指针,而这个指针指向存储在堆中的一个对象,如果你更改这个指针,另一个对象也会有变化

我先创造了一个对象叫obj1

又创造了个变量叫obj2把obj1的值付给了obj2

我们给obj1对象添加了一个属性叫做name,值是Jerry

结果我们发现obj1和obj2之中都有一个name属性叫Jerry,造成这个问题的原因上面说了,但是文字看上去不是很好理解,所以我们来搞个图片理解一下

js中所有的
函数的参数都是按值来传递的(废话),简单的传参方式我们之前的章节有所提到过。把函数体外部的值赋值给函数体内部就像把变量从一个赋值到另一个一样

外部的obj1传递到函数内部之后,函数吧obj1的属性新增了一个name,外部的obj1也会多一个属性叫做name