美文网首页让前端飞
分享我在学习web前端路上踩过的一些坑

分享我在学习web前端路上踩过的一些坑

作者: 强哥科技兴 | 来源:发表于2019-02-14 19:47 被阅读0次

在前端开发这条路上,相信很多人在前进的过程中都有迷茫或者坎坷的时期,那么是什么支持我们走的那么远呢,相信大多数人的回答都是对前端的热爱。

前端开发真的是一个漫长、艰苦而又收获满满的。当我们回首,以前所踩过的坑,都会使我们变得更强大。

很多人在初入前端时,都会或多或少得遇到一些小问题,有的会被html、css中布局搞得头大,有的会被js的逻辑关系缠得晕头转向,那么我们今天就来简单地谈谈js中闭包吧。

很多人对于闭包的认识就是函数里面嵌套一个函数,我们不妨把闭包理解为是将函数内部和函数外部连接起来的一座桥梁,他就是定义在函数内部的一个函数。

众所周知,js中声明的变量是有作用域的,分为全局变量和局部变量。在函数之外定义的是全局变量,函数内部可以直接读取全局变量。在函数之内定义的是局部变量,函数不能读取其他函数的局部变量。

那么在上述代码中,因为我们的变量a是在函数fn内部定义的,所以他是一个局部变量,那么根据函数不能读取其他函数的局部变量的定义,所以我们函数fn2执行的结果是a is not defined。

那么我们怎样可以读取到函数fn内部的变量呢,这里,我们就可以使用闭包。闭包有两个最大的特点:一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

所以我们在函数fn内部定义了一个函数fn1,此时就形成了一个闭包。在我们执行函数fn时,函数fn1可以获取到函数fn的内部变量,所以我们的执行结果是1。

不过,闭包固然好用,但是因为闭包会使得我们函数中声明的变量都保存在内存中,不被js中的垃圾机制回收(在Javascript中,如果一个对象不再被引用,那么这个对象就会被GC回收。如果两个对象互相引用,而不再被第3者所引用,那么这两个互相引用的对象也会被回收。因为函数a被b引用,b又被a外的c引用,这就是为什么函数a执行后不会被回收的原因。),所以内存消耗会非常大,导致我们网页性能差,不过这个问题我们可以找到一些解决办法,使用闭包时,我们在退出函数之前,将不使用的局部变量全部删除;而且闭包还会在父函数外部改变父函数内部变量的值。所以我们在使用时要小心,尽量减少闭包的使用。

前端开发这条路漫长、艰辛而又收获满满,希望各位且行且珍惜。最后对前端感兴趣或者正在学习前端的小伙伴可以关注下方微信-公众号,领取一套免费的前端系统学习视频。

相关文章

  • 分享我在学习web前端路上踩过的一些坑

    在前端开发这条路上,相信很多人在前进的过程中都有迷茫或者坎坷的时期,那么是什么支持我们走的那么远呢,相信大多数人的...

  • 分享我在学习web前端路上踩过的一些坑

    在前端开发这条路上,相信很多人在前进的过程中都有迷茫或者坎坷的时期,那么是什么支持我们走的那么远呢,相信大多数人的...

  • 前端新人

    新入门web前端,想把在学习前端道路上的心得分享一下,嘻嘻

  • 思考|人类的全部智慧,表现在哪里?

    作为老母亲,在养儿路上踩过坑,未来也许还会踩坑,但是现在通过大量学习,深思反省,种下信念。 等待孩子的成长。 对孩...

  • 大数据爬坑收录

    爬出过的坑 大数据运维过程就是一个踩坑的过程。如下分享一些踩过的坑,以供参考。 Hive Spark Flink ...

  • 我在花钱路上踩过的坑

    都说花钱买教训,我的教训何其多。 一、莫名其妙买不符合自己收入的“贵重品”。 首先我得说说首饰,平时我不怎么穿戴首...

  • 我在投资路上踩过的坑

    科创板开板了,对中国股市来讲具有里程碑式的意义,标志着国内股市从审核制度走向了注册制。至于,会对A股产生什么样的影...

  • 好程序员Web前端培训分享一些小知识!

    好程序员Web前端培训分享一些小知识!为了帮助正在从事Web前端工作和正在学习Web前端的小伙伴更好的了解Web前...

  • 2022最新JAVA学习路线(附面试题)

    在 Java 学习这条路上也踩过无数次的坑,秋招也幸运的拿到了一些大厂 Java 开发的offer。 (文末附面试...

  • 前端踩过的坑

    写在前面,这篇文章仅用来记录自己在前端方面曾经踩过的一些坑,一些在当时不那么容易费了好一会神才能解决的坑,避免日后...

网友评论

    本文标题:分享我在学习web前端路上踩过的一些坑

    本文链接:https://www.haomeiwen.com/subject/ipeyeqtx.html