位置: 编程技术 - 正文

深入解析JavaScript中的立即执行函数(深入解析java编译器源码剖析与实例详解pdf百度云)

编辑:rootadmin

推荐整理分享深入解析JavaScript中的立即执行函数(深入解析java编译器源码剖析与实例详解pdf百度云),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:深入解析抑郁症:什么是它的表现?别小看它的危害程度!,深入解析抑郁症:什么是它的表现?别小看它的危害程度!,深入解析CSS pdf,深入解析windows第7版卷2,深入解析CSS pdf,深入解析什么意思,深入解析windows,深入解析windows第7版pdf,内容如对您有帮助,希望把文章链接给更多的朋友!

它是什么在 JavaScript 里,每个函数,当被调用时,都会创建一个新的执行上下文。因为在函数里定义的变量和函数是唯一在内部被访问的变量,而不是在外部被访问的变量,当调用函数时,函数提供的上下文提供了一个非常简单的方法创建私有变量。

在许多情况下,你可能并不需要makeWhatever这样的函数返回多次累加值,并且可以只调用一次得到一个单一的值,在其他一些情况里,你甚至不需要明确的知道返回值。

它的核心现在,无论你定义一个函数像这样function foo(){}或者var foo = function(){},调用时,你都需要在后面加上一对圆括号,像这样foo()。

正如你所看到的,这里捕获了一个错误。当圆括号为了调用函数出现在函数后面时,无论在全局环境或者局部环境里遇到了这样的function关键字,默认的,它会将它当作是一个函数声明,而不是函数表达式,如果你不明确的告诉圆括号它是一个表达式,它会将其当作没有名字的函数声明并且抛出一个错误,因为函数声明需要一个名字。

问题1:这里我么可以思考一个问题,我们是不是也可以像这样直接调用函数 var foo = function(){console.log(1)}(),答案是可以的。问题2:同样的,我们还可以思考一个问题,像这样的函数声明在后面加上圆括号被直接调用,又会出现什么情况呢?请看下面的解答。

函数,圆括号,错误有趣的是,如果你为一个函数指定一个名字并在它后面放一对圆括号,同样的也会抛出错误,但这次是因为另外一个原因。当圆括号放在一个函数表达式后面指明了这是一个被调用的函数,而圆括号放在一个声明后面便意味着完全的和前面的函数声明分开了,此时圆括号只是一个简单的代表一个括号(用来控制运算优先的括号)。

立即执行函数表达式(IIFE)幸运的是,修正语法错误很简单。最流行的也最被接受的方法是将函数声明包裹在圆括号里来告诉语法分析器去表达一个函数表达式,因为在Javascript里,圆括号不能包含声明。因为这点,当圆括号为了包裹函数碰上了 function关键词,它便知道将它作为一个函数表达式去解析而不是函数声明。注意理解这里的圆括号和上面的圆括号遇到函数时的表现是不一样的,也就是说。

当圆括号出现在匿名函数的末尾想要调用函数时,它会默认将函数当成是函数声明。当圆括号包裹函数时,它会默认将函数作为表达式去解析,而不是函数声明。

关于括号的重要笔记在一些情况下,当额外的带着歧义的括号围绕在函数表达式周围是没有必要的(因为这时候的括号已经将其作为一个表达式去表达),但当括号用于调用函数表达式时,这仍然是一个好主意。

这样的括号指明函数表达式将会被立即调用,并且变量将会储存函数的结果,而不是函数本身。当这是一个非常长的函数表达式时,这可以节约比人阅读你代码的时间,不用滚到页面底部去看这个函数是否被调用。

深入解析JavaScript中的立即执行函数(深入解析java编译器源码剖析与实例详解pdf百度云)

作为规则,当你书写清楚明晰的代码时,有必要阻止 JavaScript 抛出错误的,同样也有必要阻止其他开发者对你抛出错误 WTFError!

保存闭包的状态就像当函数通过他们的名字被调用时,参数会被传递,而当函数表达式被立即调用时,参数也会被传递。一个立即调用的函数表达式可以用来锁定值并且有效的保存此时的状态,因为任何定义在一个函数内的函数都可以使用外面函数传递进来的参数和变量(这种关系被叫做闭包)。

记住,在这最后两个例子里,lockedInIndex可以没有任何问题的访问i,但是作为函数的参数使用一个不同的命名标识符可以使概念更加容易的被解释。

立即执行函数一个最显著的优势是就算它没有命名或者说是匿名,函数表达式也可以在没有使用标识符的情况下被立即调用,一个闭包也可以在没有当前变量污染的情况下被使用。

自执行匿名函数(“Self-executing anonymous function”)有什么问题呢?

你看到它已经被提到好几次了,但是它仍然不是那么清楚的被解释,我提议将术语改成"Immediately-Invoked Function Expression",或者,IIFE,如果你喜欢缩写的话。

什么是Immediately-Invoked Function Expression呢?它使一个被立即调用的函数表达式。就像引导你去调用的函数表达式。

我想Javascript社区的成员应该可以在他们的文章里或者陈述里接受术语,Immediately-Invoked Function Expression和 IIFE,因为我感觉这样更容易让这个概念被理解,并且术语"self-executing anonymous function"真的也不够精确。

希望上面的例子可以让你更加清楚的知道术语'self-executing'是有一些误导的,因为他并不是执行自己的函数,尽管函数已经被执行。同样的,匿名函数也没用必要特别指出,因为,Immediately Invoked Function Expression,既可以是命名函数也可以匿名函数。

最后:模块模式当我调用函数表达式时,如果我不至少一次的提醒我自己关于模块模式,我便很可能会忽略它。如果你并不属性 JavaScript 里的模块模式,它和我下面的例子很像,但是返回值用对象代替了函数。

模块模式方法不仅相当的厉害而且简单。非常少的代码,你可以有效的利用与方法和属性相关的命名,在一个对象里,组织全部的模块代码即最小化了全局变量的污染也创造了使用变量。

浅析JavaScript 箭头函数 generator Date JSON ES6标准新增了一种新的函数:ArrowFunction(箭头函数)。x=x*x上面的箭头相当于:function(x){returnx*x;}箭头函数相当于匿名函数,并且简化了函数定义。一种像上

详解JavaScript中|单竖杠运算符的使用方法 js运算符单竖杠|的作用在js整数操作的时候,相当于去除小数点,parseInt。在正数的时候相当于Math.floor(),负数的时候相当于Math.ceil()注:1.Math.ceil()用作向

JavaScript程序中的流程控制语句用法总结 条件判断语句1.if语句if(condition)statement1elsestatement2其中的condition条件可以是任意表达式,而且对这个表达式的求值结果不一定是布尔值。ECMAScript会自动

标签: 深入解析java编译器源码剖析与实例详解pdf百度云

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

上一篇:简单掌握JavaScript中const声明常量与变量的用法(简单掌握办公软件怎么写)

下一篇:浅析JavaScript 箭头函数 generator Date JSON(js 箭头表达式)

  • 什么是企业增值税和所得税
  • 实际已缴纳所得税额在汇算清缴报告里怎么看
  • 发票盖了财务专用章旁边再盖发票章
  • 冲销暂估原材料
  • 附加税申报减免性质代码下面的三个请选择用填吗
  • 产品样品送样流程
  • 企业长期贷款具备什么条件
  • 企业卫生费是指什么
  • 准予以后纳税年度结转扣除的项目有
  • 营改增对建筑业的影响
  • 货发出款未收的会计分录怎么做?
  • 企业接收供应商赠品怎么正确的入账?
  • 工厂报废的产品价格有规定吗
  • 给职工发放的福利费,要从应付职工薪酬科目吗
  • 非独立核算的分公司怎么做账
  • 金融业融资租赁
  • 物业公司安装监控
  • 待处理财产损益的二级科目
  • 如何从工商信息中看出是小规模还是一般纳税人
  • 销售方如何开具红字增值税专票 对方未抵扣
  • 期末结转生产成本会计分录
  • 网上代开专票 附加税在哪看
  • 个人捐赠住房
  • 发票认证只认证进项吗
  • 员工奖励专项基金怎么填
  • 废旧物资回收企业税收管理
  • mac双系统删除window后怎么重新恢复
  • 施工组织评审会谁组织
  • xp系统电脑关机后又重启怎样处理
  • 冲减预付账款会计分录
  • 怎么用onekey重装系统
  • PHP:pg_escape_literal()的用法_PostgreSQL函数
  • 短缺的材料算不算入账价值
  • mac快捷键是什么意思
  • 小米路由器2代改8t
  • php yeid
  • vscode+cmake
  • 感知机算法python
  • 人工智能lisp
  • 资产减值损失如何确定
  • 未经审计情况说明怎么写
  • 出租车发票可以重新打印吗
  • 公司年终奖要做多久才能享受
  • 新的事业单位财务规则对医院运用的变化
  • 水库水面经营权如何取得
  • 不反写会影响开票吗
  • 政府扶持资金使用要求
  • 股票股利发放形式是什么
  • 员工出差报销补贴政策
  • 委托加工应税消费品纳税义务发生时间
  • 道路施工企业的上级监管部门是谁
  • 管理费用如何分摊到项目
  • 政府奖励我公司的钱
  • 填写增值税纳税申报怎么填写?
  • 进项税发票可以跨年抵扣吗
  • 企业经营规模小怎么办
  • sql解析原理
  • system表空间满了怎么处理
  • mysql参数表
  • 硬盘 linux
  • unix操作系统有何特点?
  • win10出现未知错误
  • win8删除文件很慢
  • Win10系统如何打开任务管理器
  • win10系统自带浏览器在哪里
  • jQuery+PHP实现可编辑表格字段内容并实时保存
  • jquery validate.js表单验证入门实例(附源码)
  • 基于android的app
  • 进入cmd命令
  • css 定位
  • 文章标题作用答题模板
  • nodejs 爬虫
  • shell函数库
  • jquery日历框有长期的选项
  • 文件管理android访问限制
  • python smtp ssl
  • 施工企业建筑机械管理机构主要职责是负责建筑机械的
  • 国家税务局总局咨询平台
  • 2021年个税退税条件
  • 电子发票查询官网入口国家税务局重庆电子税务
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设