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 相关文章推荐
actionscript与javascript的区别
May 25 Javascript
用Javascript来生成ftp脚本的小例子
Jul 03 Javascript
JavaScript作用域链使用介绍
Aug 29 Javascript
JavaScript中的数据类型转换方法小结
Oct 26 Javascript
判断数组是否包含某个元素的js函数实现方法
May 19 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
Aug 17 Javascript
Bootstrap popover用法详解
Dec 22 Javascript
bootstrap vue.js实现tab效果
Feb 07 Javascript
HTML的select控件美化
Mar 27 Javascript
纯js实现画一棵树的示例
Sep 05 Javascript
详解Axios 如何取消已发送的请求
Oct 20 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
Oct 30 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 print类函数使用总结
2010/06/25 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
Jquery的基本对象转换和文档加载用法实例
2015/02/25 Javascript
在JavaScript中处理数组之reverse()方法的使用
2015/06/09 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
jquery Deferred 快速解决异步回调的问题
2016/04/05 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
JSON 对象未定义错误的解决方法
2016/09/29 Javascript
jQuery实现的无缝广告图片左右滚动功能详解
2016/12/24 Javascript
javascript 删除数组元素和清空数组的简单方法
2017/02/24 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
2018/09/13 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
[36:20]KG vs SECRET 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
常见的在Python中实现单例模式的三种方法
2015/04/08 Python
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
pycharm设置默认的UTF-8编码模式的方法详解
2020/06/01 Python
如何在C# winform中异步调用web services
2015/09/21 面试题
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
女子职高个人自荐书
2014/02/01 职场文书
小松树教学反思
2014/02/11 职场文书
风险评估实施方案
2014/03/09 职场文书
个人查摆剖析材料
2014/10/04 职场文书
检讨书范文
2015/01/27 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang
dubbo服务整合zipkin详解
2021/07/26 Java/Android