那些可能会忘记或不知所以然的点:

1、

2、

3、

4、

5、

6、

/*
函数调用会在内存形成一个“调用记录”,又称调用帧,保存调用位置和内存变量等信息。
如果在函数 A 的内部调用函数 B,那么在 A 的调用帧上方,会形成一个 B 的
调用帧,等到 B 运行结束,将结果返回到 A,B 的调用帧才会消失。
*/ function add(n) {
if (n === 1) {
return 1;
}
return n * add(n - 1);
} add(3); // 6 /*
第一个入栈 add(3), return 3 * add(3 - 1) = 3 * add(2)
第二个入栈 add(2), return 2 * add(2 - 1) = 2 * add(1)
第三个入栈 add(1), return 1 第三个出栈 add(1), return 1,将返回结果返回到第二个栈中,
第二个出栈 add(2), return 2 * 1, 将返回结果返回到第一个栈中,
第一个出栈 add(3), return 3 * 2 * 1
*/

7、

8、

9、

10、

function strMaptoObj (map) {
let obj = Object.create(null);
for (let [k, v] of map) {
obj[k] = v;
}
return obj
} let map = new Map([
[2, "e"],
[{f: 'bar'}, 323],
[{g: 'foo'}, "后来的对象会把前面的覆盖"]
]); console.log(strMaptoObj(map)); // {2: 'e', [object Object]: '后来的对象会把前面的覆盖'}
console.log(strMaptoObj(map)["[object Object]"]); // 后来的对象会把前面的覆盖

map

11、

proxy 章节延伸 prototype

<script>
/*
isPropertyOf:允许检查一个对象是否存在于另一个对象原型链上。
Foo.prototype.isPrototypeOf(baz):表示检查 baz 对象是否继承自 Foo 或者说 Foo.prototype 在 baz 的原型链上。
*/
// Baz.prototype / Bar.prototype / Foo.prototype / Object.prototype 在 baz 对象的原型链上: function Foo() {}
function Bar() {}
function Baz() {} Bar.prototype = Object.create(Foo.prototype);
Baz.prototype = Object.create(Bar.prototype); var baz = new Baz(); console.log(Baz.prototype.isPrototypeOf(baz)); // true
console.log(Bar.prototype.isPrototypeOf(baz)); // true
console.log(Foo.prototype.isPrototypeOf(baz)); // true
console.log(Object.prototype.isPrototypeOf(baz)); // true
</script>

prototype

12、promise 章节延伸执行机制

const promise = new Promise(function (resolve, reject) {
resolve(2);
}); // 备注为 A
promise
.then(value => {console.log(value); return value + s2; })
.catch(error => console.log("error1:", error)); // 备注为 B
promise
.then(value => { console.log(value); return value + 2 })
.then(val => { console.log(val); return val + y; })
.catch(error => console.log("error2: ", error)); /*
2
2
error1: ReferenceError: s2 is not defined
4
error2: ReferenceError: y is not defined 说明: catch 捕捉第一个报错的 promise 实例,
A 中的 promise 实例链式里,出错的是第一个 then
B 中的 promise 实例链式里,出错的是第一个 then
*/ /*
第一轮循环:promise 的第一个 then 方法,then 方法后的 then 或 catch
同样是异步,整体的执行顺序是:
第一轮微任务
A: promise.then // 打印 2
B: promise.then // 打印 2 第二轮微任务
A: promise.then.catch // 打印 error1: ReferenceError: s2 is not defined
B: promise.then.then // 打印 4 第三轮微任务
B: promise.then.then.catch // 打印 error2: ReferenceError: y is not defined
*/

promise-then-then

13、allSettled —— 不设置 await 写法

14、try —— 匿名函数执行,其实第二个写法直接写成 new Promise(resolve => resolve(f()) 不成了吗~

15、const 声明数字类型不能再重新修改赋值。

ES6片段的更多相关文章

  1. 2020年值得你去试试的10个React开发工具

    本文由葡萄城技术团队翻译并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. JavaScript每天都在出现大量的框架和工具,而React是除了上次我们 ...

  2. vscode 快速入门

    vscode 快速入门 本篇主要讲解 vscode 使用中的一些经验: 配置 vue 开发环境 - Vetur+ESLint+Prettier 代码片段的使用 常用插件 如何完全卸载 vscode 通 ...

  3. es6 代码片段理解

    代码片段理解: [INCREMENT]: (state, action) => { const { payload: { id } } = action //because payload co ...

  4. 超实用的 JavaScript 代码片段( ES6+ 编写)

    Array 数组 Array concatenation (数组拼接) 使用 Array.concat() ,通过在 args 中附加任何数组 和/或 值来拼接一个数组. const ArrayCon ...

  5. 精心收集的 95 个超实用的 JavaScript 代码片段( ES6+ 编写)

    https://www.html.cn/archives/8748#table-of-contents https://www.haorooms.com/post/js_regexp

  6. ES6常用片段

    promise: --在return里面: methods:{ getSellData(){ return axios.get('/api/seller').then((res=>{ retur ...

  7. 微信小程序之ES6与事项助手

    由于官方IDE更新到了0.11.112301版本,移除了对Promise的支持,造成事项助手不能正常运行,解决此问题,在项目中引入第三方兼容库Bluebird支持Promise,代码已经整合到项目代码 ...

  8. ECMAScript 6(ES6)有什么新东西

    你可能已经听说过ECMAScript 6,JavaScript的下一个版本,它有一些非常棒的新功能.这些功能略微复杂,在简单的脚本和复杂的应用中都可以使用.在这篇文章中,我们将挑选一些ES6的功能进行 ...

  9. 关于ES3、ES5、ES6以及ES7所有数组的方法(api)的总结

    起因:工作用经常用到操作数组的方法,这里进行一下总结,我尽量以简洁的语言概括每个方法(api)的作用.如果您想快速定位,可以Control+F 然后搜相应的方法即可定位 :) ES3的数组方法 joi ...

随机推荐

  1. elasticsearch 的倒排索引是什么 ?

    解答:通俗解释一下就可以. 传统的我们的检索是通过文章,逐个遍历找到对应关键词的位置. 而倒排索引,是通过分词策略,形成了词和文章的映射关系表,这种词典+映射表 即为倒排索引. 有了倒排索引,就能实现 ...

  2. html5的video元素学习手札

    为了监控移动端视频播放的情况,研究了一下 html5 <video> 标签的属性与事件触发,及其在各系统和各个浏览器的兼容情况 属性与事件 理解清楚属性和事件,才能更好的使用 video ...

  3. CTFHUB之gopher协议实现SSRF

    介绍 解题思路: 利用302协议(重定向)的跳转ssrf.可以访问与服务器相连的内网 ①什么是gopher协议 Gopher是Internet上一个信息查找系统,它将Internet上的文件组织成某种 ...

  4. springboot+mybatis实现数据分页(三种方式)

    项目准备 1.创建用户表 2.使用spring初始化向导快速创建项目,勾选mybatis,web,jdbc,driver 添加lombok插件 <?xml version="1.0&q ...

  5. redis5.0.0集群搭建【实战经历】

    redis集群搭建 作者:陈土锋 时间:2020年6月2日 目录 一.环境介绍... 1 1.机器准备... 1 2.关闭防护墙和selinux. 1 3.时间同步... 1 二.Redis Clus ...

  6. 服务器的cpu 核心、线程

    此版本有大范围改动,因为cpu作为一个大脑,所以更细致的进行了,相关的分析和阐述. 1.版本1. 2022.1.242.版本2: 2022.3.2 采集数据: ht2机器为物理机,cpu是4颗cpu, ...

  7. Java学习day2

    今天学习了Java的数据类型.运算符.选择循环结构以及数组. Java所有的关键字全部小写 Java的数据类型与c语言相似,但是c语言定义数组时可以不主动对其初始化,而Java则必须先初始化,有动态和 ...

  8. Codeforces Round #700 (Div. 2) --- B(思维)

    传送门 有必要提醒自己一下, 先把题读利索了(手动捂脸) 题目 B. The Great Hero   The great hero guards the country where Homer li ...

  9. gin框架使用【6.JSON渲染】

    package main import ( "github.com/gin-gonic/gin" ) type User struct { Id int `json:"i ...

  10. 《手把手教你》系列基础篇(八十八)-java+ selenium自动化测试-框架设计基础-Log4j 2实现日志输出-下篇(详解教程)

    1.简介 上一篇宏哥讲解和分享了如何在控制台输出日志,但是你还需要复制粘贴才能发给相关人员,而且由于界面大小限制,你只能获取当前的日志,因此最好还是将日志适时地记录在文件中直接打包发给相关人员即可.因 ...