2021-01-06 09:00:36 +08:00
|
|
|
# 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)
|
|
|
|
|
|
|
|
所有的变量都是在栈里面 但是如果创建引用类型的时候会在堆创建 然后只赋值对象地址给栈里面的变量
|
|
|
|
|
|
|
|
这个得详细讲一下
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-01-08 09:33:23 +08:00
|
|
|
当创建变量的时候 会在栈创建一个位置 对应变量名 值为undefined
|
|
|
|
|
|
|
|
赋值的时候 会赋值栈里面的值
|
|
|
|
|
|
|
|
创建对象的时候 会在堆里面创建一个空间 存储对象 赋值的时候赋的是堆里面的内存地址 就是在堆里面的名字
|
|
|
|
|
|
|
|
根据以上的规则 当将一个指向对象的变量赋值给另一个变量的时候 因为只会赋值栈里面的值 所以赋值的是内存地址
|
|
|
|
|
|
|
|
修改的时候修改的是同一个内存的对象 所以就会出现修改一个另一个也会同时改变的
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-01-06 09:00:36 +08:00
|
|
|
作业
|
|
|
|
- 为什么对象是引用的
|
|
|
|
- 引用类型与基础类型有什么区别
|