JavaScript中立即执行函数实例详解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript中立即执行函数实例详解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3386字,纯文字阅读大概需要5分钟。
内容图文
![JavaScript中立即执行函数实例详解](/upload/InfoBanner/zyjiaocheng/283/9622e094b73e4e8bafd8365d166404d3.jpg)
前言
js立即执行函数可以让你的函数在创建后立即执行,js立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行,这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行。
( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,后来发现加括号的原因并非如此。
下面话不多说了,来一起看看详细的介绍吧。
通常我们声明一个函数有以下几种方式:
如果你看过一些自定义控件的话你会发现他们大多数都是沿用这种写法:
这是我们常说的立即执行函数(IIFE),顾名思义,也就是说这个函数是立即执行函数体的,不需要你额外去主动的去调用,一般情况下我们只对匿名函数使用IIFE,这么做有两个目的:
一是不必为函数命名,避免了污染全局变量
二是IIFE内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量。
如果看到这两句话无法理解,那么先从IIFE的运行原理说起。
因为IIFE通常用于匿名函数,这里就用简单的匿名函数作为栗子:
我们发现这里f只是这个匿名函数的一个引用变量,那么既然f()能够调用这个函数,我把f替换成函数本身可以么:
运行之后得到如下结果:
产生这个错误的原因是,Javascript引擎看到function关键字之后,认为后面跟的是函数声明语句,不应该以圆括号结尾。解决方法就是让引擎知道,圆括号前面的部分不是函数定义语句,而是一个表达式,可以对此进行运算,这里区分一下函数声明和函数表达式:
1、函数声明(即我们通常使用function x(){}来声明一个函数)
2、函数表达式(类似以这种的形式)
小学我们就学过用()括起来的表达式会先执行,就像下面这样:
1+(2+3) //这里先运行小括号里面的内容没有意见撒
其实在javascript中小括号也有相似的作用,Javascript引擎看到function关键字会认为是函数声明语句,那么如果Javascript引擎优先看到小括号会怎么样:
函数成功执行了:
输出这种情况下Javascript引擎就会认为这是一个表达式,而不是函数声明,当然要让Javascript引擎认为这是一个表达式的方法还有很多:
回到前面的问题,为什么说IIFE这种形式避免了污染全局变量,如果你见过别人写的jquery插件,里面通常会有类似这样的代码:
这里的jquery其实是该匿名函数的参数,联想一下我们调用匿名函数时候是用f()那么匿名带参数的就是f(args)对吧,这里把jquery作为参数传入该函数,那么在函数内部使用形参$的时候就不会影响到外部环境,因为有些插件也会用到$这个限定符,你在这个函数内部可以随意折腾。
相关推荐:
JS中的立即执行函数
JavaScript立即执行函数的三种不同写法_javascript技巧
JavaScript中的立即执行函数表达式介绍_javascript技巧
以上就是JavaScript中立即执行函数实例详解的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的JavaScript中立即执行函数实例详解全部内容,希望文章能够帮你解决JavaScript中立即执行函数实例详解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。