# javascript基础 ## 基础类型与引用类型 类型之前是有区别的 什么叫基础类型 什么叫引用类型呢? ## 基础类型 - string - number - boolean - null - undefined 基础类型在传递值的时候会复制自己 ```javascript var name = "啦啦啦"; var name1 = name; name1 = "喵喵喵"; alert(name); alert(name1); ``` ## 引用类型 - array - obgect - function ```javascript var obg = {name:"啦啦啦"} var bog1 = obg obg1.name = "喵喵喵" alert(obg.name) alert(obg1.name) ``` ## 栈堆 ![wechatimg104](4.javascript基础.assets/163f6b03478ae38a) 所有的变量都是在栈里面 但是如果创建引用类型的时候会在堆创建 然后只赋值对象地址给栈里面的变量 这个得详细讲一下 当创建变量的时候 会在栈创建一个位置 对应变量名 值为undefined 赋值的时候 会赋值栈里面的值 创建对象的时候 会在堆里面创建一个空间 存储对象 赋值的时候赋的是堆里面的内存地址 就是在堆里面的名字 根据以上的规则 当将一个指向对象的变量赋值给另一个变量的时候 因为只会赋值栈里面的值 所以赋值的是内存地址 修改的时候修改的是同一个内存的对象 所以就会出现修改一个另一个也会同时改变的 作业 - 为什么对象是引用的 - 引用类型与基础类型有什么区别