一、标准的闭包函数
//一、标准的闭包函数
function A() {
var i=0;
++i;
console.log('i : ' + i);
return function b() {
return function c() {
return ++i
}
}
} var a = A(); // 初始化A,执行A内的非function语句 ‘ i=0; ++i‘,输出 I : 1
console.log(a()); // 执行function b,输出 [Function: c]
console.log(a()()); // 执行function b后执行 function c,输出 2
// 将++i放入function b中
function A() {
var i=0;
return function b() {
++i;
console.log('i : ' + i);
return function c() {
return ++i
}
}
} var a = A(); // 执行i=0 没有输出
console.log(a()); // 执行function b,输出 i : 1 [Function: c]
console.log(a()()); // 执行function b后,再执行function c, 输出 i : 2 3

二、箭头函数闭包函数

//箭头函数的闭包函数
var Add = (i = 0) => {
++i;
console.log('I : ' + i);
return (() => {
return (() => ( ++i))
})
}; var v = Add(); // 会执行方法内的非function语句 输出I : 1
console.log(v()()); // 第一个括号进入第一个箭头函数,第二个括号进入第二个箭头函数 输出 2
console.log(v()()); // 输出 3
//将++i放入第一个箭头函数中
var Add = (i = 0) => {
return (() => {
++i;
console.log('I : ' + i);
return (() => ( ++i))
})
}; var v = Add(); //会执行方法内除箭头函数的代码,初始化i=0
console.log(v()); //第一个括号进入第一个箭头函数,++i执行一次,所以执行完成i的值为1 输出 I : 1 [Function]
console.log(v()()); //两个箭头函数都会执行,++i执行两次,所以执行完成i的值为3 输出:I : 2 3

JavaScript闭包函数&箭头函数调用与执行的更多相关文章

  1. Javascript闭包函数快速上手

    闭包函数是什么?在开始学习的闭包的时候,大家很能都比较难理解.就从他的官方解释来说,都是比较概念化的. 不过我们也还是从闭包的含义出发. 闭包是指函数有自由独立的变量.换句话说,定义在闭包中的函数可以 ...

  2. 第112天:javascript中函数预解析和执行阶段

    关于javascript中的函数:  1.预解析:把所有的函数定义提前,所有的变量声明提前,变量的赋值不提前  2.执行 :从上到下执行,但有例外(setTimeout,setInterval,aja ...

  3. 不可不知的JavaScript - 闭包函数

    闭包函数 什么是闭包函数? 闭包函数是一种函数的使用方式,最常见的如下: function fn1(){ function fn(){ } return fn; } 这种函数的嵌套方式就是闭包函数,这 ...

  4. javascript闭包函数

    JavaScript中的匿名函数及函数的闭包   1.匿名函数 2.闭包 3.举例 4.注意 1.匿名函数 函数是JavaScript中最灵活的一种对象,这里只是讲解其匿名函数的用途.匿名函数:就是没 ...

  5. JavaScript闭包函数的理解

    闭包就是一个函数能够访问其函数外部作用域中的变量,即在外面可以调用函数中的函数的变量,其实他就是将函数内外部连接起来的桥梁 闭包三大特点: 1. 函数嵌套函数 2. 内部函数可以访问外部函数的变量 3 ...

  6. JavaScript闭包函数的写法

    <script type="text/javascript"> //通过js内置的函数构造器创建函数 var func=new Function('a','b','re ...

  7. Javascript闭包和C#匿名函数对比分析

    C#中引入匿名函数,多少都是受到Javascript的闭包语法和面向函数编程语言的影响.人们发现,在表达式中直接编写函数代码是一种普遍存在的需求,这种语法将比那种必须在某个特定地方定义函数的方式灵活和 ...

  8. 理解JavaScript闭包(closure)

    闭包听了很多次了,可是到底有那些具体的用法还是不清楚,看了<JavaScript高级程序设计>,有点明白了. 1.闭包的定义: 闭包其实就是一个函数,而这个函数有点特别,它能够访问另一个函 ...

  9. 什么是javascript闭包?

    在我们开发中,也经常使用到闭包,但当有人问什么是闭包,就会可能说不上来.那就谈谈一些基本的: 一.理解闭包的概念, 简单说当function里嵌套function时,内部的function可以访问外部 ...

随机推荐

  1. hadoop伪分布环境快速搭建

    1.首先下载一个完成已经进行简单配置好的镜像文件(hadoop,HBASE,eclipse,jdk环境已经搭建好,tomcat为7.0版本,建议更改为tomcat8.5版本,运行比较稳定). 2安装V ...

  2. 线段树合并 || 树状数组 || 离散化 || BZOJ 4756: [Usaco2017 Jan]Promotion Counting || Luogu P3605 [USACO17JAN]Promotion Counting晋升者计数

    题面:P3605 [USACO17JAN]Promotion Counting晋升者计数 题解:这是一道万能题,树状数组 || 主席树 || 线段树合并 || 莫队套分块 || 线段树 都可以写..记 ...

  3. J2EE快速开发框架

    地址: http://git.oschina.net/blind/app 项目简介 使用Maven对项目进行模块化管理,提高项目的易开发性.扩展性. 实现了通用的系统管理模块功能,包含:用户.角色.权 ...

  4. 常用类枚举和DATE的介绍

    1 常用类 日期时间类 时间戳的内容:就是距离特定时间的时间间隔.,本质上也是一种整形(long). 例如:计算机时间戳就是距离历元(1970-01-01 00:00:00:000)的时间间隔. 世界 ...

  5. Ecplise通过Git将项目提交到GitHub

    一.参考https://blog.csdn.net/bendanany/article/details/78891804 二.注意点: 1.仓库名必须和项目名相同: 2.若提交出现Can't conn ...

  6. 洛谷P4092 [HEOI2016/TJOI2016]树 并查集/树链剖分+线段树

    正解:并查集/树链剖分+线段树 解题报告: 传送门 感觉并查集的那个方法挺妙的,,,刚好又要复习下树剖了,所以就写个题解好了QwQ 首先说下并查集的方法趴QwQ 首先离线,读入所有操作,然后dfs遍历 ...

  7. spss缺失值填充步骤

    缺失值填充是数据预处理最基本的步骤,一般能想到的是固定值填充(均值等统计学方法).根据与本列有相关关系的列函数表示来填充.这次我用的是em算法进行填充,具体原理后续补充. 主要记录一下步骤: 工具栏: ...

  8. AutoBat

    var currentDir = Directory.GetCurrentDirectory(); var filePath = string.Format("{0}\\Auto.bat&q ...

  9. 关于Oracle归档的一些操作

    1.查看日志模式archive log list,或者select name,log_mode from v$database; 2.数据库非归档模式改为归档模式: 关闭数据库:shutdown im ...

  10. scrapy学习---管道

    使用管道必须实现process_item() 方法 process_item(self, item, spider) 次方法实现数据的过滤处理等操作 open_spider(self, spider) ...