JavaScript 基础知识总结1
数据类型
分类
基本(值)类型
- String:任意字符串
- Number:任意数值
- boolean:true/false
- undefined:undefined
- null:null
对象(引用)类型
- Object:任意对象
- Function:一种特别的对象(可以执行)
- Array:一种特别的对象(数值下标,内部数据是有序的 )
判断
- typeof 返回数据类型的字符串表达(小写)
- 可以判断:undefined / 数值 / 字符串 / 布尔值 / function
- 不能判断:null 与 object、object 与 array
- instanceof 判断对象的具体类型
- ===
- 可以判断:undefined / null
- 函数高级
- 面向对象高级
- 线程机制与事件机制
FAQ:
undefined 与 null 的区别?
- undefined 代表定义未赋值
- null 代表定义并赋值,值为 null
什么时候给变量赋值为 null ?
- 初始赋值,表明将要赋值为对象
- 结束前,表明该对象不再使用,成为垃圾对象(被垃圾回收器回收)
严格区别变量类型与数据类型?
- 数据的类型:
- 基本类型
- 对象类型
- 变量的类型(变量内存值的类型):
- 基本类型:保存就是基本类型的数据
- 引用类型:保存地址值
- 数据的类型:
数据、变量与内存
什么是数据?
- 存储在内存中代表特定信息的’东东‘,本质上是 0101……
- 数据的特点:可传递,可运算
- 一切皆数据
- 内存中所有操作的目标:数据
- 算术运算
- 逻辑运算
- 赋值
- 运行函数
什么是内存?
- 内存条通电以后产生的可存储数据的空间(临时的)
- 内存产生和死亡:内存条(电路板)==> 通电 ==> 产生内存空间 ==> 存储数据 ==> 断电 ==> 内存空间和数据都消失
- 一块小内存的两个数据:
- 栈:全局变量/局部变量
- 堆:地址
什么是变量?
- 可变化的量,由变量名和变量值组成
- 每个变量都对应一块小内存,变量名用来查找对应的内存,变量值就是内存中保存的数据
内存、数据、变量三者之间的关系?
- 内存用来存储数据的空间
- 变量是内存的标识
FAQ:
var a = xxx, a 内存中到底保存的是什么?
- xxx 是基本数据,保存的是这个数据
- xxx 是对象,保存的是对象的地址
- xxx 是一个变量,保存的 xxx 的内存内容(可能是基本数据,也可能是地址值)
关于引用变量赋值问题
- n 个引用变量指向同一个对象,通过一个变量修改对象内部数据,其他所有 变量看到的是修改之后的数据
在 js 调用函数时传递变量参数时,是值传递还是引用传递
- 理解 1:都是值传递(基本/地址值)传递
- 理解 2:可能是值传递,也可能是引用传递(地址值)
JS 引擎如何管理内存
- 内存生命周期
- 分配小内存空间,得到它的使用权
- 存储数据,可以反复进行操作
- 释放小内存空间
- 释放内存
- 局部变量:函数执行完自动释放
- 对象:成为垃圾对象 ==> 垃圾回收器回收
- 内存生命周期