位置: 编程技术 - 正文

不使用 JS 匿名函数理由(js匿名函数作用域)

编辑:rootadmin

推荐整理分享不使用 JS 匿名函数理由(js匿名函数作用域),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js匿名函数和箭头函数,js async 匿名函数,js匿名函数和命名函数,js匿名函数和命名函数,匿名类不能用于接口的实现,js匿名函数和命名函数,js匿名类,js匿名类,内容如对您有帮助,希望把文章链接给更多的朋友!

匿名函数的基本形式为(function(){...})();

前面的括号包含函数体,后面的括号就是给匿名函数传递参数并立即执行之

匿名函数的作用是避免全局变量的污染以及函数名的冲突

无论你在什么时候读代码,您都必须注意到匿名函数。有时它们被称为 lambda,有时是匿名函数,不管怎样,我认为他们是不好使用的。

如果你不知道匿名函数是什么,这里有一个引语:

匿名函数是一种在运行时动态声明的函数。它们之所以被称为匿名函数是因为不同于普通函数,它们并没有函数名 。 — Helen Emerson, Helephant.com

匿名函数形式如下:

我今天尝试让大家理解通常情况下只有在绝对需要的情况下才使用匿名函数的想法。匿名函数不应该是首选,而且应该知道原因情况下使用。当理解这种想法之后,你的代码会变得更简洁,更容易维护,并且更容易跟踪bug。先从避免使用匿名函数的三个理由开始:

你写代码的时候, 无论你多么擅长敲代码, 总是会碰到错误。有时候,这些错误很容易被查出,有时候并不容易。

如果你知道这些错误来自哪里,那么错误很容易会被查出来。为了查出错误,我们使用这个被叫做堆栈轨迹的工具。如果你不了解 堆栈轨迹 ,goole给出了很棒的介绍。

假设现在有一个非常简单的工程:

上面代码里面有一个非常愚蠢的错误,拼写错误(console.log)。在小工程里面,这个拼写错误不是什么大问题。 如果这是一个有非常多模块非常大的工程的一小段,问题就大了。假设这个愚蠢的错误不是你犯的,那么新来的初级工程师将会在他休假之前把这个错误提交到代码库!

现在,我们必须追查。 使用我们精心命名的函数, 我们得到如下的堆栈跟踪:

谢谢你命名你的函数 ,初级开发者们! 现在我们可以轻松地追踪到这个bug。

但是..一旦我们解决了这个问题, 就会发现 还有另一个bug。 这次是一位更资深的开发人员介绍的。这个人知道 lambdas结果他们偶然发现了一个bug,我们的工作就是追踪它。

不使用 JS 匿名函数理由(js匿名函数作用域)

下面是代码:

吃不吃惊,这名开发者也忘记了如何拼写console.log了!这也太巧合了吧!令人感到遗憾的是,他们都没有命名他们的函数。

那么控制台会输出什么呢?

好吧,我们至少还有行号,对吧?在这个例子中,看起来我们有大约7行代码。如果我们处理一大段代码会如何呢?比如一万行代码?行号的跨度如此之大该怎么办呢?如果代码被折叠后有没有一个代码地图文件,那么对行号的渲染是不是根本就是没有什么用了呢?

我想对这些问题的回答相当简单,答案就是:想这些会让你一整天都会过的相当糟心。

可读性

咦,我听说你还不信。你仍旧对你的匿名函数恋恋不舍,并且还从未发生过bug。那么我得向你道歉,你认为你的代码是完美的。让我们看看这个!

看看下面两段代码:

这是一个非常不正常的例子,但是我相信你已经明白我要说什么 了。我们的方法返回了一个promise,我们用这个promise对象/方法处理不同可能的 响应。

你也许会认为几段代码读起来并不难,但我认为它们可以变得更好!

如果我们去掉所有的匿名函数会怎样呢?

好,先讲清楚:这部分代码更长,但我认为其不仅仅是有更多的可读性!我们精心命名的函数与匿名函数不一样,只要我们一看到它们的名字就知道它们的功能是什么。这避免了在评估代码时的障碍。

这也有助于分清楚其中的关系。与创建一个方法、将其传递、然后运行逻辑不同,在第二个例子中的参数被给到了then,catch只是指向了发生所有事情的函数。

关于更具有可读性,我没有什么再能说服你的了。但是也许你还没被说服的话,我可以试一下最后的论据。

总结

以上所述是小编给大家介绍的不使用 JS 匿名函数的理由,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!

深入研究React中setState源码 React作为一门前端框架,虽然只是focus在MVVM中的View部分,但还是实现了View和model的绑定。修改数据的同时,可以实现View的刷新。这大大简化了我们的逻

五步轻松实现JavaScript HTML时钟效果 学了一段时间的HTML、CSS和JS后,给大家做一款漂亮的不像实力派的HTML时钟,先看图:涉及到的知识点有:CSS3动画、DOM操作、定时器、圆点坐标的计算(

JavaScript canvas实现围绕旋转动画 使用canvas的convas来实现围绕旋转动画,外圈顺时针,里层逆时针代码demo链接地址:代码demo链接地址html文件!DOCTYPEhtmlhtmlheadlang="en"metacharset="UTF-8"title/title

标签: js匿名函数作用域

本文链接地址:https://www.jiuchutong.com/biancheng/369823.html 转载请保留说明!

上一篇:bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)

下一篇:深入研究React中setState源码(深入react技术栈)

  • 已认证进项税额转出会计分录账务处理
  • 代付的费用收不收手续费
  • 建筑工程怎么确定施工工程进度
  • 利润总额和未分配利润的公式
  • 固定资产用于集体福利也算经营管理需要吗
  • 收到投资款需要交税吗?
  • 合伙制创投企业
  • 教育用地转让缴哪些税
  • 股权拍卖溢价部分如何做会计处理?
  • 发票认证完是不是没开票
  • 项目一次性奖励会计分录怎么处理
  • 金蝶软件钩稽怎么操作
  • 认证过的进项税怎么记账
  • 企业所得税预缴可以不交吗
  • 企业卖了个人如何交税
  • 固定基金会计分录怎么处理
  • 代收代付业务是什么意思
  • 应收账款减值准备可以税前扣除吗
  • 公司内部培训师试讲开场白
  • 高温津贴的发放
  • 出租固定资产收取租金
  • 深度deepin系统安装教程
  • 国地税合并有什么角度写论文
  • 小米路由器599元
  • 税后讲课费的个税由谁承担
  • Chat GPT实用案例——VUE+Chat GPT实现聊天功能教程
  • php发送qq邮箱
  • 缴费单位未按规定缴纳社会保险费的按日加收
  • vue项目部署上线 需要做哪些准备
  • mavon-editor的使用
  • 分公司不享受小规模纳税
  • html+css+js网页设计期末作业付源码
  • uniapp开发app视频教程
  • 营业额是营业收入总额吗
  • 未分配利润为负的原因
  • 一个小柜的货代费用
  • 小规模企业利息收入要交税吗
  • 企业所得税申报表在哪里打印
  • 帝国cms好用吗
  • html前端开发教程
  • 劳务费个税申报流程
  • 什么是,利息
  • 房产税的征收范围和标准有哪些
  • 出口退税申报系统汇率修改
  • 营业外收入记入企业的什么
  • 售后服务期多久
  • 预付账款写到什么凭证
  • 应收帐款坏帐会计分录怎么处理
  • 政府专款专用
  • 增值税发票开负数怎么做账?
  • 通行费的进项抵税怎么算
  • 确定收入 记账凭证摘要怎么写
  • 管家婆销售赠品是不是自动结转成本?
  • 原材料可以不设明细吗?
  • 新冠肺炎疫情相关租金减让适用简化处理方法的时间范围
  • 业务招待费管理草案探讨
  • mysql uuid分页优化
  • sql两个数据怎么合并到一起
  • 怎么将windowsxp换成windows7
  • 强化廉洁意识 筑牢思想防线
  • 硬盘 bios
  • 事件查看器中"TermService" 服务的性能库问题处理
  • 获取方法
  • Windows7 64位系统如何添加打印机图文教程
  • linux apt apt-get
  • 安全配置为0
  • bootstrap按钮的风格有哪些?
  • python2.7.11
  • jquery select2的使用心得(推荐)
  • jq写css样式
  • 安卓压缩图片
  • python相似模块用例
  • 如何使用jquery
  • python3 cookie
  • 国家税务总局广东省税务局待遇
  • 个税app如何更改扣缴义务人
  • 江苏昆山电费查询电话
  • 支部书记讲党课主题教育
  • 电子税务怎么弄
  • 中级财务管理好难
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设