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 相关文章推荐
jquery的$(document).ready()和onload的加载顺序
May 26 Javascript
Array的push与unshift方法性能比较分析
Mar 05 Javascript
JQuery select控件的相关操作实现代码
Sep 14 Javascript
如何用javascript计算文本框还能输入多少个字符
Jul 29 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
May 25 Javascript
AngularJS入门教程之REST和定制服务详解
Aug 19 Javascript
详解webpack 多入口配置
Jun 16 Javascript
js学习总结_选项卡封装(实例讲解)
Jul 13 Javascript
JS实现数组的增删改查操作示例
Aug 29 Javascript
JS实现使用POST方式发送请求
Aug 30 Javascript
js模拟实现百度搜索
Jun 28 Javascript
比较node.js和Deno
Apr 27 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/04/11 PHP
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
JavaScript中字面量与函数的基本使用知识
2015/10/20 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
AngularJS读取JSON及XML文件的方法示例
2017/05/25 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
swiper自定义分页器的样式
2020/09/14 Javascript
Python过滤列表用法实例分析
2016/04/29 Python
Python错误处理操作示例
2018/07/18 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
对于Python深浅拷贝的理解
2019/07/29 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
Python selenium抓取虎牙短视频代码实例
2020/03/02 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
string = null 和string = ''的区别
2013/04/28 面试题
How to spawning asynchronous work in J2EE
2016/08/29 面试题
幼儿园英语教学反思
2014/01/30 职场文书
绿色家庭事迹材料
2014/05/01 职场文书
骨干教师考核方案
2014/05/09 职场文书
我的梦想演讲稿1000字
2014/08/21 职场文书
竞选大学学委演讲稿
2014/09/13 职场文书
2015年司法局工作总结
2015/05/22 职场文书
Go语言基础map用法及示例详解
2021/11/17 Golang
《王者天下》第4季首话新剧照 4月9日正式开播
2022/04/07 日漫
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python