# 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

赋值的时候 会赋值栈里面的值

创建对象的时候 会在堆里面创建一个空间 存储对象 赋值的时候赋的是堆里面的内存地址 就是在堆里面的名字

根据以上的规则 当将一个指向对象的变量赋值给另一个变量的时候 因为只会赋值栈里面的值 所以赋值的是内存地址

修改的时候修改的是同一个内存的对象 所以就会出现修改一个另一个也会同时改变的





作业
- 为什么对象是引用的
- 引用类型与基础类型有什么区别