/*阐明:这是一些顺手记录的内容,暂未零碎的排序和分级,后续可能会整顿,也可能就是这样/*

1.对象的遍历

1.for in

for(let key in obj){        console.log(obj[key])    }

2.Object.keys()

2.扩大运算符(...)

1.哪些对象能够应用?
可迭代对象,包含数组、类数组对象(字符串、arguments对象、NodeList)、Set、Map

2.为什么?
扩大运算符默认调用的是对象的iterator接口,任何配置了iterator接口的对象都能够应用扩大运算符

3.什么是可迭代对象?
存在[Symbol.iterator]办法的对象,咱们能够在可迭代对象自身或原型身上找到[Symbol.iterator]办法,该办法的呈现为的是ES6语法中的 for of

3.模块化规范

模块化的长处或者说为什么模块化?
防止命名抵触;更好地拆散;按需加载;更高复用性;高可维护性。

commonJS

同步加载,实用于服务端编程,运行时加载,输入值的拷贝

AMD/RequieJS

异步加载,可并行加载多个模块,加载完即执行,无奈保障执行程序,前置依赖

CMD

异步加载,依赖就近(按需加载),加载实现后需调用执行

ES6

异步加载,输入值的援用,编译时输入,在代码动态解析阶段就会产生

4.在bable将ES6语法本义为ES5时,会如何解决let和const?

1.let定义的变量是全局变量,则间接将let变成var
2.块级作用域中,会将let申明的关键字前加下划线生成新的关键字后再用var进行申明
let a => var _a
3.循环体中闭包的状况,会将循环体转换为自执行函数

5.Map和Object的区别

1.键的取值类型:Map能够取任意值;Object只能是字符串或Symbol

2.插入程序:Map会放弃插入程序;Object会依照本身规定排序

3.迭代:Map可迭代,可应用for-of及forEach;Object默认不可迭代,遍历需应用for-in、Object.keys()、Object.values()、Object.entries()等办法

4.原型:Map默认不会笼罩原型属性;Object可笼罩

5.操作:

MapObject
创立new关键字new、{}
新增mapObj.set('a',1)obj.a = 1 / obj[a] = 1
查问mapObj.get('a')obj.a / obj[a]
删除mapObj.delete('a')delete obj.a / delete obj[a]
长度mapObj.size()Object.keys(obj).length

6.函数柯里化

将原函数转化,转化后返回一个能够持续调用的函数,能够持续调用以达到持续传参的目标,传入的参数会被放入闭包中储存起来,等到真正运算时,再将之前传入的所有参数运算后返回最终后果

利用:参数复用*;提前返回(不同环境执行不同办法);提早计算:记账,迷信计算器等。

*参数复用:须要屡次执行的函数中有局部参数是雷同的,此时能够先传入雷同参数,而后返回具备差异化参数的闭包函数,此时只在内部调用闭包函数传差别参数即可