/*阐明:这是一些顺手记录的内容,暂未零碎的排序和分级,后续可能会整顿,也可能就是这样/*
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.操作:
Map | Object | |
---|---|---|
创立 | 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.函数柯里化
将原函数转化,转化后返回一个能够持续调用的函数,能够持续调用以达到持续传参的目标,传入的参数会被放入闭包中储存起来,等到真正运算时,再将之前传入的所有参数运算后返回最终后果
利用:参数复用*;提前返回(不同环境执行不同办法);提早计算:记账,迷信计算器等。
*参数复用:须要屡次执行的函数中有局部参数是雷同的,此时能够先传入雷同参数,而后返回具备差异化参数的闭包函数,此时只在内部调用闭包函数传差别参数即可