1.闭包的优缺点:
优点:
1. 函数外部可以访问函数内部的变量
2. 避免变量被污染
3. 变量常驻内存, 不会垃圾回收机制回收
缺点:
1. 闭包使用不当,造成内存泄漏
2. 变量常驻内存,导致内存浪费
2.js 数据类型:
基本数据类型 (原始类型 primitive)
String 字符串类型
Number 数值类型
Boolean 布尔类型 : 只有两个值 true false
Null 空
Undefined 未定义
Symbol 唯一值 es6 新增的
引用数据类型
对象 Object
数组 Array
函数 Function
3.字符串方法:
charAt() 返回指定索引位置的字符
concat() 连接两个或多个字符串,返回连接后的字符串
indexOf() 返回字符串中检索指定字符第一次出现的位置
lastIndexOf() 返回字符串中检索指定字符最后一次出现的位置
slice() 提取字符串的片断,并在新的字符串中返回被提取的部分
split() 把字符串分割为子字符串数组
substr() 从起始索引号提取字符串中指定数目的字符
substring() 提取字符串中两个指定的索引号之间的字符
toLocaleLowerCase() 根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射
toLocaleUpperCase() 根据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射
toLowerCase() 把字符串转换为小写
toString() 返回字符串对象值
toUpperCase() 把字符串转换为大写
trim() 移除字符串首尾空白
4.数组的方法:
基础的方法
concat: ƒ concat() 拼接数组
forEach: ƒ forEach()循环数组
includes: ƒ includes()判断数组中是否存在指定的值
indexOf: ƒ indexOf()检索指定的值在数组中第一次出现位置的索引值, 返回结果是索引值,不存在则返回-1
join: ƒ join()拼接数组转换为字符串
lastIndexOf: ƒ lastIndexOf()检索指定的值在数组中最后一次出现位置的索引值, 返回结果是索引值,不存在则返回-1
pop: ƒ pop()
push: ƒ push()
reverse: ƒ reverse()
shift: ƒ shift()
slice: ƒ slice()
sort: ƒ sort()排序
splice: ƒ splice()添加删除替换数组中的值
toString: ƒ toString()转换为字符串
unshift: ƒ unshift()
***es6往后新增的方法
reduce: ƒ reduce()
entries: ƒ entries()
every: ƒ every()
fill: ƒ fill()
filter: ƒ filter()
find: ƒ find()
findIndex: ƒ findIndex()
findLast: ƒ findLast()
findLastIndex: ƒ findLastIndex()
keys: ƒ keys()
map: ƒ map() 遍历数组, 返回的是一个新数组 (通过指定的规则 把原数组中的值映射到新数组对应的值)
some: ƒ some() 遍历数组 返回值是布尔类型 false true
5.函数对象的方法:
call() : 调用执行函数,修改this指向,传参是一一罗列的 fn.call(null, '在这里传参', 1)
apply():调用执行函数,修改this指向, 传参是以数组的形式 fn.apply(null, ['数组形式传递', 2, '11'])
bind(): 返回一个新函数
6.原型链:本质 是 __proto__ 属性
实例化对象访问属性或方法时,如果自身存在,则使用, 如果不存在,实例化对象存在 __proto__属性,
指向原型对象, 就会沿着__proto__ 去原型对象prototype上查找,找到则使用,如果找不到, 原型对象prototype
也存在 __proto__ 属性,继续向上查找, 直到找到为止, 原型链的顶端为null , 我们把找到的一系列的原型对象串起
来 就形成了原型链;
7.promise的理解
promise() : 解决回调地狱的问题 , 但是也会造成 then 的过度使用
promise 有三种状态:
pending : 进行中
fulfilled : 成功态
rejected : 失败态
只能 从 pending ===> fulfilled 状态 或者 pending ===> rejected状态, 一旦状态确定后,就不在改变
Promise对象有以下两个特点:
1.对象的状态不受外界影响。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态
2.一旦状态改变,就不会再变,任何时候都可以得到这个结果。
8.filter和map的区别
filter是只返回满足条件的,map是把原数组进行一一加工返回新的数组
9.垃圾回收机制:
是为了以防内存泄漏,不定时的清理不用的变量并释放掉他们所指向的内存