一、标准的闭包函数
//一、标准的闭包函数
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. xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun

    原文地址 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcru ...

  2. 找不到main

    用eclipse写代码的时候,写了一个简单的程序,编译的时候突然出现“错误: 在类 com.test.demo 中找不到 main 方法, 请将 main 方法定义为: public static v ...

  3. 线段树合并 || BZOJ 5457: 城市

    题面:https://www.lydsy.com/JudgeOnline/problem.php?id=5457 题解: 线段树合并,对于每个节点维护sum(以该节点为根的子树中最大的种类和)和kin ...

  4. Linux 安装mysql mariadb配置

    CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置 1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server ...

  5. angularjs实例

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...

  6. [Day9]面向对象

    1.面向过程与面向对象 (1)面向对象思维方式是一种更符合人们思考习惯的思想 (2)面向过程思维方式中更多的体现的是执行者,而面向对象中更多的体现的是指挥者 (3)面向对象思维方式将复杂的问题简单化 ...

  7. Xcode工程编译错误之iOS开发之Xcode9报错 Compiling IB documents for earlier than iOS7 is no longer supported.

    概要: 在我们升级到Xcode9时,最低的编译版本为iOS8,但是在使用一些SDK的时候就会报出Compiling IB documents for earlier than iOS7 is no l ...

  8. zabbix报错排错大全

    zabbix报错 https://www.cnblogs.com/losbyday/category/876878.html作者总结的很全棒 1.在启动zabbix-agent 时系统日志输出 PID ...

  9. 15.1-uC/OS-III资源管理(锁调度器)

    1.大部分独占资源的方法都是创建临界段:1) 关中断方式2) 锁调度器方式3) 信号量方式4) mutex方式 2.独占共享资源的最快和最简单方法是关中断 然而,关/开中断是和CPU相关的操作,其相关 ...

  10. ios dispatch_async使用

    一般这样使用: dispatch_async(dispatch_get_global_queue(0, 0),^{ //进入另一个线程 dispatch_async(dispatch_get_main ...