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