JS 自执行函数原理及用法


Posted in Javascript onAugust 05, 2019

js自执行函数,听到这个名字,首先会联想到函数。接下来,我来定义一个函数:

function aaa(a,b){
  return sum = a + b
}

定义了一个名为aaa的函数,在里面可以计算两个数的和。如果想执行它,就必须得调用它,并且还得给它传参:

var aa = aaa(1,2)

这样就实现了一个函数的定义与调用,通过console.log我们可以看到sum实现了两个数的相加。

自执行函数是什么?自执行函数就是当它被定义出来,就会自动执行的函数。不需要调用,传参也很方便。就上面的函数,用自执行函数定义就是这样:

(function aaa(a,b){
  return sum = a + b
;})(1,2)

通过控制台可以发现sum实现了两个数的相加。

自执行函数有三种写法:

1.( function ( “ 参数 ” ) { " 函数方法 " ; } ) ( “ 给参数传的值 ” )

2.( function ( " 参数 " ) { “ 函数方法 ” ; } ( " 给参数传的值 " ) )

3.! function ( " 参数 " ) { " 函数方法 " ; } ( " 给参数传的值 " ) 

第三种!可以换作其他运算符或者void。

自执行函数是很自私的,它的内部可以访问全局变量。但是除了自执行函数自身内部,是无法访问它的。例:

function aaa(a1,b1){
  return sum1 = a1 + b1
},
(function bbb(a2,b2){
  return sum2 = a2 + b2
;}(),
console.log(aaa)
console.log(bbb)

这是一个函数与一个自执行函数,输出这两个函数会发现:函数aaa被全部打印出来,而bbb则报错。自执行函数相当于一个瓶口朝下的杯子,当定义它的时候,它会倾斜,把杯口露出来,吸收外面的新鲜空气;当它执行完毕,杯口不再外露,紧闭起来,与外界再无关联。

Javascript 相关文章推荐
超级有用的13个基于jQuery的内容滚动插件和教程
Jul 31 Javascript
JQuery onload、ready概念介绍及使用方法
Apr 27 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
Nov 25 Javascript
基于jquery的simpleValidate简易验证插件
Jan 31 Javascript
Javascript核心读书有感之语言核心
Feb 01 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
Mar 05 Javascript
JQuery CheckBox(复选框)操作方法汇总
Apr 15 Javascript
详解AngularJS中的filter过滤器用法
Jan 04 Javascript
javascript对象的相关操作小结
May 16 Javascript
bootstrap vue.js实现tab效果
Feb 07 Javascript
在vue中使用setInterval的方法示例
Apr 16 Javascript
微信小程序抽奖组件的使用步骤
Jan 11 Javascript
jQuery提示框插件SweetAlert用法分析
Aug 05 #jQuery
Nuxt.js实战和配置详解
Aug 05 #Javascript
Vue组件间通信 Vuex的用法解析
Aug 05 #Javascript
前后端常见的几种鉴权方式(小结)
Aug 04 #Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
Aug 04 #Javascript
vue v-for 使用问题整理小结
Aug 04 #Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
Aug 04 #Javascript
You might like
php截取中文字符串不乱码的方法
2013/12/25 PHP
学习php设计模式 php实现门面模式(Facade)
2015/12/07 PHP
PHP中number_format()函数的用法讲解
2019/04/08 PHP
小试JQuery的AutoComplete插件
2011/05/04 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
超实用的JavaScript代码段 附使用方法
2016/05/22 Javascript
jQuery开源组件BootstrapValidator使用详解
2017/06/29 jQuery
Angular父组件调用子组件的方法
2018/04/02 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
js数组的基本使用总结
2021/01/18 Javascript
[00:56]跨越时空加入战场 全新祈求者身心“失落奇艺侍祭”展示
2019/07/20 DOTA
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
Python的Bottle框架中获取制定cookie的教程
2015/04/24 Python
从Python的源码来解析Python下的freeblock
2015/05/11 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
HTML5的结构和语义(5):内嵌媒体
2008/10/17 HTML / CSS
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
Currentbody德国站:健康与美容技术专家
2020/04/05 全球购物
社会发展项目建议书
2014/08/25 职场文书
小学生清明节演讲稿
2014/09/05 职场文书
甜品店创业计划书
2014/09/21 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
通知的写法
2015/04/23 职场文书
诗词赏析-(浣溪沙)
2019/08/13 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL