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

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. 哪些是重要的 bean 生命周期方法?你能重载它们吗?

    有两个重要的 bean 生命周期方法,第一个是 setup , 它是在容器加载 bean 的时候被调用.第二个方法是 teardown 它是在容器卸载类的时候被调用. The bean 标签有两个重要 ...

  2. 在 Spring 中如何注入一个 java 集合?

    Spring 提供以下几种集合的配置元素:类型用于注入一列值,允许有相同的值.类型用于注入一组值,不允许有相同的值.类型用于注入一组键值对,键和值都可以为任意类型.类型用于注入一组键值对,键和值都只能 ...

  3. ElasticSearch-学习笔记04-复杂查询

    service package com.huarui.service; import com.huarui.entity.SearchEntity; import com.huarui.exectio ...

  4. Redis++:Redis做分布式锁真的靠谱吗

    Redis做分布式锁真的靠谱吗 Redis的分布式锁可以通过Lua进行实现,通过setnx和expire命令连用的方式 || 也可以使用高版本的方法同时设置失效时间,但是假如在以下情况下,就会造成无锁 ...

  5. 经历了源码的痛苦,掌握DRF的核心序列化器

    目录 DRF的核心--序列化器 序列化器 什么是序列化和反序列化? 序列化 序列化demo 字段类型 字段参数 序列化自定制返回字段 方法一:在序列化类(serializers.py)中写 方法二:在 ...

  6. C++ | 智能指针初探

    智能指针初探 在 c/c++ 语言中有一种特殊的类型--指针类型. 指针作为实体,是一个用来保存一个内存地址的计算机语言中的变量.它可以直接对内存地址中的数据进行操作,是一种非常灵活的变量.指针被誉为 ...

  7. 罗振宇2022"时间的朋友"跨年演讲

    罗振宇2022"时间的朋友"跨年演讲 行就行,不行我再想想办法. 原来,还能这么干! 堆资源不是解决问题的唯一道路,还是那句话:"处于困境中的人往往只关注自己的问题.而解 ...

  8. 分享一个自己写的基于canvas的原生js图片爆炸插件

    DEMO访问地址: https://bupt-hjm.github.io/BoomGo/博客地址: http://bupt-hjm.github.io/2016/07/10/boom/插件及使用方法地 ...

  9. echarts中饼图的legend自定义icon图片(扇形为例)

    效果图: 代码: 问题:// icon: "pin", // 这个字段控制形状 类型包括 circle,rect ,roundRect,triangle,diamond,pin,a ...

  10. Java 值传递 or 引用传递?

    Java 方法传参 值传递 or 引用传递? 结论:Java采用的是值传递 先建立一些基础的概念 什么是值传递和引用传递? 值传递(pass by value):是指在调用函数时将实际参数复制一份传递 ...