1.JS变量类型
JS变量类型分为基本类型和引用类型
基本类型:基本类型有Undefined,String,Number,Boolean,Null;按值访问,可以直接操作保存在变量的实际值。存储方式栈存储。
基本类型在复制值的时候,会在变量对象上创建一个新的值,然后把这个值复制到新变量分配的位置上面来
引用类型:保存在内存中的对象,JS不允许直接访问变量内存的位置,,就是说不能直接操变量内存空间。存储方式是堆内存。引用类型可以添加属性和方法。
引用类型在复制值的时候,同样会将存储在变量对象中的值复制一份放到新变量的分配的空间上面,但是不同的是,这个值实际上就是一个副本发指针,这个指针指向存储子堆中的一个对象,实际上是两个变量引用的是同一个对象,改变其中一个变量,也会影响另外的一个变量。
2.函数的参数传递是按照值访问的
1.当传递的参数是基本数据类型的时候
2.当传递的参数是引用类型的时候,传递的参数是一个对象的时候:
在这个Person函数内部存在的的obj是一个局部变量,外面的pre是全局的变量,因为obj和pre引用的是同一个对象,在函数内部为obj添加属性的时候,外面的全局对象也跟着作出类反映。
为什么pre.name不是Alean?
说明函数的参数传递是按照值类访问的,当函数的内部重写obj的时候,这个变量引用的是一个局部对象,这个局部对象在函数执行完以后久销毁类。