一、数据类型总结
1.分类
- 基本(值)类型
- String:任意字符串
- Number:任意数字
- Boolean:true/false
- Null:null
- Undefined:undefined
- 对象(引用)类型
- Object:任意对象
- Function:一种特别的对象(可以执行)
- Array:一种特别的对象(数值下标,内部数据是有序的)
2.判断
- typeof:返回数据类型的字符串表达
- 可以判断 数值/字符串/布尔值/Undefined/Function
- 不能判断:Null和Object Object和Array
- instanceof:判断对象的具体类型
- ===
- 可以判断:undefined/null
3.相关问题
- undefined与null的区别
- undefined代表定义未赋值
- null代表定义并赋值,值为null
- 什么时候给变量赋值为null?
- 初始赋值为null,表示将要赋值为对象
- 最后赋值为null,将对象变成垃圾对象(被垃圾回收器回收)
- 严格区别变量类型和数据类型
- 数据的类型
- 基本类型
- 对象类型
- 变量的类型(变量中存储的值的类型)
- 基本类型:保存的就是基本类型的数据
- 引用类型:保存的是地址值
- 数据的类型
二、数据、变量、内存
1. 什么是数据
- 数据是存储在内存中代表特定信息的“东西”,本质上是0101…
- 数据的特点:可传递,可运算
- 一切皆数据
- 内存中所有操作的目标:数据
- 算术运算
- 逻辑运算
- 赋值
- 运行函数
- 特定的数据类型可执行的操作是固定的
2.什么是内存
- 内存条通电以后产生的可存储数据的空间(临时的)
- 内存的产生和死亡:内存条(电路板)–>通电–>产生内存空间–>存储数据–>处理数据–>断电–>内存空间和数据消失
- 一块小内存的两个数据:内部存储的数据和地址值
- 内存分类:
栈:全局变量/局部变量
堆:对象
3.什么是变量
- 可变化的量,由变量名和变量值组成
- 每个变量都对应一小块内村,变量名用来查找对应的内存,变量值就是内存中保存的数据
4.三者的关系
- 内存是用来存储数据的空间
- 变量是内存的标识
5.相关问题
(1)var a = xxx,a内存中保存的是什么?
- xxx是基本数据,保存的就是这个数据
- xxx是对象,保存的是对象的地址
- xxx是变量,保存的是该变量的内存内容
(2)关于引用变量赋值的问题
- 多个引用变量会指向同一个对象,一个变量修改对象中的内容,其他变量也会受到影响
- 两个引用变量指向同一个对象,其中一个变量指向另一个对象后,另一个引用变量依然指向前一个对象
(3)关于数据传递的问题
js调用函数传递变量参数时,是值传递还是引用传递?
- 理解1:都是值(基本值/地址值)传递
- 理解2:可能是值传递,也可能是引用传递(地址值)
(4)JS引擎如何管理内存 - 内存生命周期
- 分配小内存空间
- 存储数据,进行操作
- 释放小内存空间
- 释放内存
- 局部变量:函数执行完之后自动释放
- 对象:成为垃圾对象==>垃圾回收器回收