位置: 编程技术 - 正文

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)

  • 购买土地的契税怎么计算
  • 航天税务软件
  • 农副产品商贸公司标语
  • 汇总记账凭证会计核算形式与科目汇总表
  • 商誉减值是在年报还是半年报
  • 金蝶迷你版怎么打印凭证
  • 小微企业税务服务站
  • 出口退税普票
  • 发票没作废写上作废了怎么办
  • 按利润总额的25%计算应交所得税
  • 会计速动比率怎么算
  • 公司注销后会计凭证保管年限
  • 代扣业务员佣金怎么做账
  • 无实收资本能日本投资吗
  • 研发物资
  • 增值税发票过期未认证怎么办
  • 白酒五行属火还是水
  • 一般纳税人必须要交几个人社保
  • 充值单据怎么开发票
  • 长期股权投资账务处理
  • 个体工商户要交附加税吗
  • 企业研发过程中特殊收入的会计处理
  • 总分机构异地移送
  • 对赌协议的账务处理流程
  • 技术服务收入和产品服务收入举个例子
  • 财务报告成本
  • Mac怎么更改锁屏密码
  • 个税系统人员信息一直在验证中
  • php干啥用
  • 应收账款转让的风险
  • 在windows 7中
  • linux特殊权限设置
  • 贷款损失会计处理
  • PHP:Memcached::addServer()的用法_Memcached类
  • 职工教育经费的列支范围
  • 个人住房5年后买卖如何交税?
  • 后台管理系统权限管理详解
  • uniapp引入全局scss
  • 在windows中安装应用程序的途径
  • php调用其他php
  • 固定资产报废会计科目处理
  • 股东退股分利润
  • mongodb4.0安装教程
  • 上年结转库存现金会计分录
  • sqlserver数据库事物日志已满
  • 实收资本什么情况下会增加
  • 原始凭证审核要点包括
  • 外贸会计的工作内容
  • 六税一费减免
  • 供货商少开发票如何记账?
  • 支付宝可以对公账户转账吗怎么转
  • 政府给的专款专用的补贴需要交税吗
  • 新成立的教育机构值得去吗
  • 影视公司临时演员怎么办
  • 公司国庆节给员工慰问品
  • 餐厅的租金是多少钱一个月
  • 电梯广告租赁属于什么服务
  • 实际成本大于预计总成本
  • 新会计准则经营租赁
  • 企业在非同一控制下的企业合并
  • sqlserver响应好慢
  • 服务器centos6.8安装教程
  • 容器内存限制
  • win7系统只有一个鼠标箭头然后重启
  • win7语言栏不见了 各种方法都试过了
  • win7文件无法删除需要权限
  • exgear是什么
  • win10 右下角
  • win8资源管理器未响应
  • win7系统如何给文件夹加密
  • win1020h2版好不好
  • scrollWidth,clientWidth与offsetWidth的区别
  • javascript中this的用法
  • jquery html5 视频播放控制代码
  • unity?
  • 专项附加扣除修改后,多扣的税
  • 山东省地方税务局印花税核定征收管理办法
  • 江苏契税补贴怎么领取
  • 注册一个信息咨询公司需要什么
  • 小规模税控盘全额抵扣怎么做分录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设