欢迎光临散文网 会员登陆 & 注册

学习笔记:JavaScript闭包,Promise,可以截图成PPT的内容【诗书画唱】

2021-12-26 22:04 作者:诗书画唱  | 我要投稿

推荐:




目录:

JavaScript闭包 - Web前端工程师面试题讲解

JavaScript 你理解Promise吗 - Web前端工程师面试题讲解


JavaScript闭包 - Web前端工程师面试题讲解

理解闭包的学习笔记:


作用:1.减少创建全局变量 减少传递给函数的参数量


2.隐藏变量,避免全局污染

3.可以读取函数内部的变量

(同时闭包使用不当,优点就变成了缺点)


闭包的话,对于一些面试初级的前端工程师可能不是很重要,但对于一些面试一些中,高级的前端工程师来说,闭包可能是必考的知识点。理解闭包可以让我们对JS有更深入的了解。


可以把“闭包”理解成:拉上拉链的装了书的书包,要用书的时候就是把书包的拉链打开,去取书。



这里这个代码为什么会错?因为在全局执行上下文的时候,没有进入books这个函数里面,且函数外面没有找到book这个变量。执行上下文可以分为创建阶段和执行阶段。


执行上下文可以理解为执行环境


https://www.imooc.com/article/264333
推荐:https://www.zhihu.com/question/20591877
1-2-3-4-5

这里闭包的执行顺序是:1-2-3-4-5-4-3-2-1(像是把在罐子里,放入薯片后取出薯片的过程)




"薯片"的执行,存放形式就是“栈"

为什么要用薯片罐模拟?因为JS是单线程的(单线程就是:一次做一件事情。)


理解闭包的关键之一是:理解执行上下文和其中创建阶段的作用域链,作用域链可以理解为:由当前变量对象所有父级变量对象组成的集合


这里的执行的顺序的话就是:for循环的执行其实是一瞬间,先执行完for中var i的变化,同时也执行了匿名函数(可讲是立即执行函数),这时for中的var i和匿名函数的x,i的是同一个内容,因为setTimeout方法的特性,在产生5个互不影响的闭包后,控制台存储0,1,2,3,4(因为闭包中的x是的互不影响的,x++必须是x之间互相影响才有效,所以这里的++没有效果,加不加都一样),先控制台输出for中的i运行完的结果为5,在4000毫秒后,存储的内容就一次性从控制台输出。所以输出结果:5(过5000毫秒后)0,1,2,3,4

JavaScript 你理解Promise吗 - Web前端工程师面试题讲解



new Promise 回有2个结果:成功和失败,成功就是reslove,失败就是reject。new Promise 是要一段时间后才能知道,所以

Promise 是回调的升级版。在执行要花费较长时间的程序的时候就可以用Promise来进行异步的处理,防止阻塞。

用then捕获resolve,用catch捕获reject




x => x * x 相当于 function(x){return x*x}



学习笔记:JavaScript闭包,Promise,可以截图成PPT的内容【诗书画唱】的评论 (共 条)

分享到微博请遵守国家法律