位置: 编程技术 - 正文

JavaScript中立即执行函数实例详解(js立即执行函数几种写法)

编辑:rootadmin

推荐整理分享JavaScript中立即执行函数实例详解(js立即执行函数几种写法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js setinterval立即执行,JavaScript中立即执行函数的作用,js立即执行函数几种写法,js立即执行函数和闭包,js setinterval立即执行,JavaScript中立即执行函数的作用,JavaScript中立即执行函数的作用,javascript立即执行函数,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

js立即执行函数可以让你的函数在创建后立即执行,js立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行,这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行。

( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,后来发现加括号的原因并非如此。

下面话不多说了,来一起看看详细的介绍吧。

通常我们声明一个函数有以下几种方式:

如果你看过一些自定义控件的话你会发现他们大多数都是沿用这种写法:

这是我们常说的立即执行函数(IIFE),顾名思义,也就是说这个函数是立即执行函数体的,不需要你额外去主动的去调用,一般情况下我们只对匿名函数使用IIFE,这么做有两个目的:

一是不必为函数命名,避免了污染全局变量

二是IIFE内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量。

如果看到这两句话无法理解,那么先从IIFE的运行原理说起。

因为IIFE通常用于匿名函数,这里就用简单的匿名函数作为栗子:

JavaScript中立即执行函数实例详解(js立即执行函数几种写法)

我们发现这里f只是这个匿名函数的一个引用变量,那么既然f()能够调用这个函数,我把f替换成函数本身可以么:

运行之后得到如下结果:

产生这个错误的原因是,Javascript引擎看到function关键字之后,认为后面跟的是函数声明语句,不应该以圆括号结尾。解决方法就是让引擎知道,圆括号前面的部分不是函数定义语句,而是一个表达式,可以对此进行运算,这里区分一下函数声明和函数表达式:

1、函数声明(即我们通常使用function x(){}来声明一个函数)

2、函数表达式(类似以这种的形式)

小学我们就学过用()括起来的表达式会先执行,就像下面这样:

其实在javascript中小括号也有相似的作用,Javascript引擎看到function关键字会认为是函数声明语句,那么如果Javascript引擎优先看到小括号会怎么样:

函数成功执行了:

这种情况下Javascript引擎就会认为这是一个表达式,而不是函数声明,当然要让Javascript引擎认为这是一个表达式的方法还有很多:

回到前面的问题,为什么说IIFE这种形式避免了污染全局变量,如果你见过别人写的jquery插件,里面通常会有类似这样的代码:

这里的jquery其实是该匿名函数的参数,联想一下我们调用匿名函数时候是用f()那么匿名带参数的就是f(args)对吧,这里把jquery作为参数传入该函数,那么在函数内部使用形参$的时候就不会影响到外部环境,因为有些插件也会用到$这个限定符,你在这个函数内部可以随意折腾。

以上,在此过程中参考了以下两篇文章:

javascript立即执行某个函数:插件中function(){}()再思考

JavaScript中的立即执行函数

总结

标签: js立即执行函数几种写法

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

上一篇:javascript+jQuery实现360开机时间显示效果(jquery())

下一篇:详解使用React全家桶搭建一个后台管理系统(react用什么ui)

  • 房地产开发产品科目
  • 金税盘维护费发票需要认证吗
  • 销售成本结转属于收入吗
  • 资产负债表的货币资金根据什么填
  • 跨月发票红字冲销账务处理
  • 小规模开的专票能抵扣进项税吗
  • 如何审计主营业务的真实性
  • 开发票第一行
  • 个税的专项扣除包括哪些内容
  • 可变现净值与公允价值孰低
  • 普通发票为什么没有章
  • 交通补贴和通讯补贴怎么发合理
  • 折扣折让 红字发票账务处理
  • 外商企业所得税可享受什么优惠政策
  • 预付账款发票到货未到怎么做账
  • 可供出售交易性金融资产申报表怎么填
  • 净残值可以随意更改吗
  • 境外派遣员工境外所得税是什么时候申报?
  • 个人劳务费发票可以委托其他人去开吗
  • 小规模怎样计算进项税额
  • 7月3日事业单位
  • 纳税人识别号在哪里能查到
  • 网上申购发票怎么撤销
  • 税收筹划要注意哪些问题
  • 房产评估增值部门有哪些
  • 员工娱乐活动比赛项目
  • 进项税转出如何申报纳税
  • 中药饮片加成率超的原因
  • 付货款时从货款中扣除的返利怎样做账?
  • 年初建账的期初余额
  • 土地 补偿
  • php psr2
  • 直系亲属股权转让免征个人所得税
  • 什么是增值税进项税额和销项税额
  • 出租其取得的不动产是什么意思
  • iframe frame
  • 宣泄不能消除不健康的情绪
  • 固定资产非正常损失
  • 固定资产卡片账自固定资产报废后的保管期限是
  • javascript网页自动化
  • logread命令
  • websocket前端vue
  • 待抵扣进项税额是什么情况下用的
  • java io读写
  • 先开票未发货要确认收入吗
  • 商家代金券谁出钱
  • 注销公司复杂吗?
  • 体检费用开发票给公司怎么开
  • 生产经营所得成本费用怎么算
  • 销售红酒的公司
  • sqlserver 通用分页存储过程
  • win8不识别u盘
  • win8的应用商店
  • winxp/win2000/win2003
  • centos的特点
  • WIN+VMWARE6.5上面网络配置centOs(5.4版) ADSL接入的小结
  • jsp环境变量配置的步骤
  • ubuntu无线网卡驱动离线安装
  • linux中文件系统
  • 提示explorer.exe
  • win7 开机动画
  • centos7安全
  • win7如何清理c盘空间不影响系统
  • win10共享打印机win7连不上
  • android app 源码
  • Unity3D游戏开发基础
  • JavaScript中的方法名不区分大小写
  • linux中的shell命令
  • js中两个等号
  • vue devtools功能
  • java模拟浏览器点击
  • unity mesh编程
  • 开票怎么查发票总额
  • 宁波国家税务局电子税务局
  • 企业吸收合并资质
  • 海淀区地税局电话
  • 新疆电子税务局下载app
  • 怎样查税务师事务所信息
  • 购车绿本是什么样的?
  • 上海社保卡原始密码是啥
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设