数据类型
-
分类
-
基本(值)类型
-
Number
- 任意数值
-
String
- 任意字符串
-
Boolean
- true/false
-
undefined
- undefined
-
null
- null
-
-
对象(引用)类型
-
Object
- 任意对象
-
Function
- 特别的对象(可以执行)
-
Array
- 特别对象(内部数据有序/数据下标)
-
-
-
判断
-
typeof
- 数值/字符串/布尔值/undefined/function
- 不能区别:null与Object, Object和Array
-
instanceof
- 判断对象的具体类型(t/f) A是否为B的实例
-
===
- null/undefined(t/f)
-
-
相关问题
-
undefined与null的区别
- undefined:定义未赋值
- null:定义并赋值,值为null
-
什么时候将变量赋值为null
- 初始赋值,表面将要赋值为对象
- 结束前,让对象成为垃圾对象(被垃圾回收器回收)
-
严格区别变量类型与数据类型
-
数据的类型
- 基本类型
- 对象类型
-
变量的类型
- 基本类型:保存的是基本类型的数据
- 引用类型:保存的是地址值
-
-
数据、变量与内存
-
什么是数据
-
储存于内存中代表特定信息,本质是0101二进制
-
可读和可传递的基本特征
-
一切皆数据
-
程序中所有操作的目标:数据
-
算术运算
-
逻辑运算
-
赋值
-
调用函数传参
- 形参本质:局部变量
- 实参本质:变量的值就是数据
-
-
-
什么是内存
-
内存条通电后产生的储存空间(临时的)
-
产生和死亡:内存条(集成电路板)–>通电–>产生一定容量的存储空间–>存储各种数据–>断电–>内存全部消失
-
内存空间是临时的,硬盘的空间是持久的
-
分配内存:声明变量和函数或创建对象时,JS引擎会自动为此分配一定大小的内存来存放对应的数据
-
内存释放:清空内存中的数量,标识内存可以再分配使用(内存不释放就不能复用0
- 自动释放:栈空间的局部变量
- 垃圾回调器回调:堆空间的垃圾对象
-
一块内存包含两个数据
- 内部储存的数据(一般数据/地址数据)
- 内存地址值数据
-
内存分类
- 栈:全局变量、局部变量(空间较小)
- 堆:对象(空间较大)
-
-
什么是变量
- 值可以变化的量,由变量名与变量值组成
- 一个变量对应一块小内存,变量名用来查找内存,变量值是内存中保存的内容
-
三者之间的关系
- 内存是一个容器,用来存储程序运行需要操作的数据
- 变量是内容的标识,我们通过变量找到对应的内存,进而操作(读/写)内存中的数据
-
相关问题
-
关于赋值与内存的问题 var a=xxx
- xxx是一个基本数据
- xxx是一个对象
- xxx是一个变量
-
关于引用变量赋值问题
- 2个引用变量指向同一个对象,通过一个引用变量修改对象内部数据,另一个引用变量也看得见
- 2个引用变量指向同一个对象,让一个引用变量指向另一个对象,另一个引用变量还是指向原来对象
-
关于数据传递问题
-
JS引擎如何管理内存
-
内存生命周期
- 分配需要的内存
- 使用分配的内容
- 不需要时将其释放/归还
-
释放内存
- 为执行函数分配的栈空间内存:函数执行完自动释放
- 存储对象的堆空间内存:当内存没有引用指向时,对象为垃圾对象、垃圾回收器后门就会回收释放此内存
-
-
对象
-
什么是对象
- 代表现实中的某个事物,是该事物在编程中的抽象
- 多个数据的集合(封装体)
- 用于保存多个数据的容器
-
为什么要用对象
- 便于多个数据进行统一管理
-
对象的组成
-
属性
- 代表现实事物的状态数据
- 由属性名和属性值组成
- 属性名都是字符串类型,属性值是任意类型
-
方法
- 代表现实事物的行为数据
- 是特别的属性==》属性值是函数
-
-
如何访问对象
-
.属性名:编码简单,但有时不能用
-
[‘属性名’]:编码麻烦但通用
- 属性名有特殊字符
- 属性名是变化的值
-
函数
-
什么是函数
- 具有特定功能的n条语句的封装体
- 只有函数是可执行的,其它类型的数据是不可执行的
- 函数也是对象
-
为什么要用函数
- 提高代码复用
- 便于阅读和交流
-
如何定义函数
- 函数声明
- 表达式
-
如何调用(执行)函数?
- test()
- new test()
- obj.test()
- test.call/apply(obj)
-
回调函数
-
什么函数是回调函数
- 你定义的
- 你没有调
- 但最终它执行了(在某个时刻或某个条件下)
-
常见回调函数
- dom事件回调函数(点击事件等)
- 定时器回调函数
-
-
IIEF
-
理解
- 全称:Immediately Function Expression立即调用函数表达式
- 别名:匿名函数自调用
-
作用
- 隐藏内部实现
- 不污染外部命名空间
-
-
函数中的this
-
this是什么
- 任何函数本质上都是通过某个对象来调用的(如果没有指定就是window)
- 所有内部函数都有一个变量this
- 它的值是调用函数当前对象
-
如何确定this值
- test():window
- p.test():p
- new teat():新创建的对象
- p.call(obj):obj
-