立即执行函数的两种写法及闭包

//立即执行函数的括号可以包括函数加参数,可以匿名也可以不匿名
//eg1:(function (){}())
//eg2:(function(){})()

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
var test = (function(a) {
alert("立即1"+a);
this.a = a;
return function(b) {
alert("立即2"+a);
return this.a + b;
}
}(function(a, b) {
alert("立即3"+a);
return a;
}(1, 2)));

(function ceshi(c){
alert(c)
}(45));

console.log(test(4)); //输出5

//执行顺序

//31
//11
//45
//21
</script>
</body>
</html>

原文地址:https://www.cnblogs.com/qdcnbj/p/8454920.html

时间: 2024-10-14 00:16:58

立即执行函数的两种写法及闭包的相关文章

状态机的两种写法

状态机的两种写法 发布时间: 2015-09-13 13:22  阅读: 1972 次  推荐: 3   [收藏] 有限状态机FSM思想广泛应用于硬件控制电路设计,也是软件上常用的一种处理方法(软件上称为FMM有限消息机).它把复杂的控制逻辑分解成有限个稳定状态,在每个状态上判断事件,变连续处理为离散数字处理,符合计算机的工作特点.同时,因为有限状态机具有有限个状态,所以可以在实际的工程上实现.但这并不意味着其只能进行有限次的处理,相反,有限状态机是闭环系统,有限无穷,可以用有限的状态,处理无穷

Button的Click事件与js函数的两种不同顺序触发方式

先执行js,或者先执行Click事件,最近就遇到了这个问题,开始弄了两个按钮分别执行,那才叫一个蛋疼... 1.先执行js,再执行Button的Click函数 <asp:Button ID="btn_delete" runat="server" Text="提交" onclick="button1_Click"/> 前台js为 <script language="javascript"&g

sql sever 的两种写法

事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位. 通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性. 在sql server+ .net 开发环境下,有两种方法能够完成事务的操作,保持数据库的数据完整性: 一个就是用sql存储过程,另一个就是在ADO.NET中一种简单的事务处理: 现在通过一个典型的银行转账的例子来说明一下这两个例子的用法 我们先来看看sql存储过程是如何来

JavaScript中的函数的两种定义方式

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> /*I总结: 1.函数名可以做变量使用,可以赋值,可以传值 2.函数名当参数,传递给另一个函数 */ //==================js中函

可拖动弹窗的JS和jQuery两种写法

最近在慕课网上学习了一个网页可拖动对话框js实现的演示视频,这个demo中的例子是百度首页登录按钮的弹窗,如下图: 当点击左上角的登录按钮时,弹窗出现并自动居中,同时窗口可拖动的范围被限制在了可视区域内,即浏览器视窗的上下左右边界,弹窗无法移出移动出四个边界,也不会出现滚动条. 另一个效果就是,当改变窗口大小时,对话框自动居中. 这个视频中用了原生js,jQuery两种写法实现案例,但本质上,对话框居中,限制拖动范围的的计算思路是一致的. 为了简化页面,总结核心思路,我重新写了一个小demo,界

js中回调函数的三种写法

回调函数的三种写法: 1.通过指针来调用 2.通过匿名函数来调用 3.定义与执行同时进行 // 通过指针来调用 function math(num1,num2,callback){ return callback(num1 , num2); } function aa(num1,num2){ return num1 + num2; } function bb(num1,num2){ return num1 - num2; } console.log( math(2,1,aa) ); // 3 c

关于MyBatis的两种写法

刚接触MyBatis是在Jike的视频中学习的,但是之后又发现和项目中的MyBatis的用法不太一致.上网找了好多资料,发现网上的教程分为两种写法: 第一种,是jike视频中的写法,写好map.xml文件之后,在MyBatis基本配置文件指定好这个map文件的位置后就直接 User user = (User) session.selectOne("selectUser", "3"); 第二种就是 mapper接口式,叫做面向接口编程. 先定义一个UserMapper

SpringBoot java配置类@Configuration 的两种写法

首先在Springboot项目中,件一个java类,使用注解@Configuration  ,则这个类是SpringBoot bean的创建的配置文件类,,这种配置文件类有两种写法 1.使用包扫描 ,创建bean2. 使用函数创建bean 1.通过包扫描,将包下所有注解类,注入到spring容器中 import org.springframework.context.annotation.ComponentScan; import org.springframework.context.anno

python3 开启多线程的两种写法

写法一 import time from threading import Thread def func(name): print(f"{name}开始") time.sleep(0.5) print(f"{name}结束") if __name__ == '__main__': t1 = Thread(target=func, args=("线程1",)) t2 = Thread(target=func, args=("线程2&qu