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 相关文章推荐
用javascript实现在小方框中浏览大图的代码
Aug 14 Javascript
jquery获取所有选中的checkbox实现代码
May 26 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
May 26 Javascript
基于Vuejs框架实现翻页组件
Jun 29 Javascript
es6新特性之 class 基本用法解析
May 05 Javascript
AngularJS中的作用域实例分析
May 16 Javascript
微信小程序仿微信运动步数排行(交互)
Jul 13 Javascript
Node.js 多进程处理CPU密集任务的实现
May 26 Javascript
在小程序中推送模板消息的实现方法
Jul 22 Javascript
你不可不知的Vue.js列表渲染详解
Oct 01 Javascript
vue或react项目生产环境去掉console.log的操作
Sep 02 Javascript
微信小程序 接入腾讯地图的两种写法
Jan 12 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 网页过期时间的控制代码
2009/06/29 PHP
PHP setTime 设置当前时间的代码
2012/08/27 PHP
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
深入php之规范编程命名小结
2013/05/15 PHP
PHP中的替代语法简介
2014/08/22 PHP
php curl 获取https请求的2种方法
2015/04/27 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
理解Javascript_03_javascript全局观
2010/10/11 Javascript
jqeury eval将字符串转换json的方法
2011/01/20 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
Jquery Validate 正则表达式实用验证代码大全
2013/08/23 Javascript
jQuery filter函数使用方法
2014/05/19 Javascript
利用d3.js实现蜂巢图表带动画效果
2019/09/03 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
2019/10/08 jQuery
Vue v-bind动态绑定class实例方法
2020/01/15 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
python切换hosts文件代码示例
2013/12/31 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
2020/04/20 Python
Python是什么 Python的用处
2020/05/26 Python
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
公务员政审个人鉴定
2014/02/25 职场文书
求职个人评价范文
2014/04/09 职场文书
预防煤气中毒方案
2014/06/16 职场文书
地理信息科学专业推荐信
2014/09/08 职场文书
群众路线问题查摆对照检查材料
2014/10/04 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
Redis持久化与主从复制的实践
2021/04/27 Redis
python实现简单石头剪刀布游戏
2021/10/24 Python
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP
vue实力踩坑之push当前页无效
2022/04/10 Vue.js