位置: 编程技术 - 正文

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)

  • 资产处置出售
  • 购进农产品的进项税额是9还是10
  • 企业税前扣除凭证包括增值税发票吗
  • 进出口贸易公司需要什么资质
  • 上月社保未扣款怎么回事
  • 通货膨胀的含义及通货膨胀率的计算
  • 电子税务局怎么导出企业所得税报表
  • 公司注销固定资产怎么处理税怎么交
  • 发票管理中的四流一致是指什么一致
  • 施工企业收到工程款交付税款的时间
  • 房地产会计预收账款明细科目
  • 临时员工和正式员工区别
  • 买赠销售方式的税务筹划
  • 企业发给员工年终奖金
  • 收到去年所得税汇算清缴退税账务处理
  • 销售原材料收到商业承兑汇票会计分录
  • 小微企业季度缴税一百万退税吗
  • 网贷公司的印花税怎么交
  • 账本印花税税金及附加怎么入账?
  • 合并起来
  • 零申报的企业
  • 浅谈收入与成本的关系
  • 医保断缴多久后余额不能用
  • 行政单位缴纳罚款如何记账
  • 员工付款的手续费怎么算
  • 长期待摊费用科目还用吗
  • 为什么在监狱拉屎都拉不方便
  • win10兼容性在哪里调整
  • 以下哪些企业需要填报
  • win7纯净版系统之家
  • 公司员工生病看望的红包能入公司账吗
  • 交易性金融资产公允价值变动计入
  • 已销售未出库如何结转成本
  • 事业单位增值税可以抵扣吗
  • 怎么配置opencv
  • vue ref获取元素高度
  • vue3.0启动命令
  • 私人定制ai绘画下载
  • php使用for循环实现乘法口诀表
  • php 错误和异常处理
  • 通行费电子发票抵扣填写到附表二的第几栏次
  • 利润分配和所有权的关系
  • 个人在平台销售怎么做
  • 科技局创业扶持资金
  • 企业变更股东需要什么手续
  • sql server如何设置远程连接
  • 库存商品入库的会计分录怎么写
  • 毛利率代表什么?如何计算毛利率?
  • 小规模企业增值税税收优惠政策2023
  • 残疾人工资加计扣除包括社保吗
  • 固定资产报废时,后续未折旧额计入哪里
  • 实收资本需要明细科目吗
  • 债务重组损失如何做会计分录
  • 预收账款和预付账款科目都是资产类科目
  • 上年计提费用多了,要怎样调
  • 社保滞纳金可以免除吗
  • 附报资料是什么
  • 专用发票不抵扣要认证吗
  • 实收资本认缴怎么做账,要做账吗
  • 管理费怎么扣除
  • winxp电脑显示器亮度怎么调
  • win8系统怎么调出运行窗口
  • win8.1启动设置
  • Linux上PPTP VPN的一键安装以及设置开机启动的方法
  • win7提示计算机内存不足
  • cocos2dx scrollview
  • javascript的数组可以存放任何类型
  • linux自动清理磁盘空间
  • 批处理程序删除文件夹中临时文件
  • javascript简明教程
  • jQuery插件在使用前都需要引入jQuery的js文件
  • JavaScript中的数据类型
  • mac版本eclipse 怎么使用
  • jQuery EasyUI Pagination实现分页的常用方法
  • 湖南税务发票查验平台官网
  • 河南灵活就业缴费截止时间
  • 运输专票怎么开发票
  • 煤炭开什么发票
  • 北京国税局开票流程
  • 2020各省旅游
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设