`
huangyongxing310
  • 浏览: 490360 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

javascript匿名函数与闭包

阅读更多

javascript匿名函数与闭包


匿名函数
1.就是没有名字的函数
(function(x, y){
    alert(x + y);
})(2, 3);

创建了一个匿名函数(在第一个括号内),第二个括号用于调用该匿名函数,并传入参数。



闭包
1.使用闭包可以大大减少我们的代码量,使我们的代码看上去更加清晰等等,总之功能十分强大。
2.闭包说白了就是函数的嵌套,内层的函数可以使用外层函数的所有变量,即使外层函数已经执行完毕(这点涉及JavaScript作用域链)。



JavaScript 自由变量
1.在A作用域中使用的变量x,却没有在A作用域中声明(即在其他作用域中声明的),对于A作用域来说,x就是一个自由变量。如下图:
2.要到创建这个函数的那个作用域中取值,(是“创建”,而不是“调用”),如:
var x=10;
function fn(){
	console.log(x);
}

function show(f){
	var x=20;

	(function(){
		f();
	})();
}

show(fn); //创建fn时,是在x=10的下一级作用域链中进行创建的




高阶函数
1.返回另一个函数的函数称为高阶函数
2.内部函数在没有任何局部声明之前(既不是被传入,也不是局部声明)使用的变量就是被捕获的变量。
3.变量的捕获发生在创建闭包的时候
function makeAdder(captured) {
    return function(free) {
        var ret = free + captured;
        console.log(ret);
    }
}

var add10 = makeAdder(10);

add10(2); // 输出:12


1.外部函数中的变量captured被执行加法的返回函数捕获,内部函数从未声明过captured变量,却可以引用它。
2.要到创建这个函数的那个作用域中取值,(是“创建”,而不是“调用”)
var a = 10;
function fn() {
    var b = 20;
    function bar() {
        console.log(a + b);
    }
    return bar;
}
var x = fn();
b = 200;
x(); //30

创建时a=10,b=20

参考原文:http://www.cnblogs.com/wangfupeng1988/p/3992795.html
分享到:
评论

相关推荐

    JavaScript 匿名函数和闭包介绍

    在讨论JavaScript编程语言时,匿名函数和闭包是两个重要的概念,它们在函数式编程和模块化代码设计中扮演着核心角色。匿名函数是没有具体名称的函数,它们可以是独立的,也可以是表达式的一部分,通常用于定义临时...

    JS匿名函数、闭包

    **匿名函数**和**闭包**都是JavaScript中非常强大的特性。通过灵活运用这些概念,可以编写出更加高效和可维护的代码。然而,需要注意的是,由于闭包会导致函数的作用域被持续保留,因此过度使用闭包可能会导致内存...

    javascript笔记之匿名函数和闭包.docx

    总的来说,JavaScript中的匿名函数和闭包是强大的工具,它们可以帮助我们创建私有变量、实现模块化和数据封装,以及在异步编程中起到重要作用。理解并熟练运用这些概念对于任何JavaScript开发者来说都是至关重要的。

    详解JavaScript匿名函数和闭包

    JavaScript是一种广泛应用于前端开发的脚本语言,其中匿名函数和闭包是JavaScript编程中非常重要的概念。通过理解这两者的工作原理和使用方法,可以极大地提升编程能力和代码的模块化、封装化程度。 首先来看匿名...

    详谈JavaScript 匿名函数及闭包

    总的来说,JavaScript的匿名函数和闭包是实现模块化、封装和高效代码的关键工具。它们可以帮助开发者创建更加健壮和易于管理的代码,同时减少全局变量的使用,提升代码的执行效率和安全性。理解并熟练运用这些概念...

    javascript笔记之匿名函数和闭包

    JavaScript中的匿名函数和闭包是两个非常重要的概念,它们在函数式编程和模块化开发中起着关键作用。 首先,让我们来理解匿名函数。匿名函数,顾名思义,是没有名称的函数。在JavaScript中,我们可以直接定义一个不...

    javascript 闭包、匿名函数、作用域链

    JavaScript中的闭包、匿名函数和作用域链是编程中至关重要的概念,它们是理解JavaScript运行机制的关键。在本文中,我们将深入探讨这三个概念,并通过实际示例来展示它们的运用。 首先,我们来讨论“闭包”。闭包是...

    (转载)JavaScript中匿名函数,函数直接量和闭包.docx

    在JavaScript中,匿名函数、函数直接量和闭包是三种非常重要的概念,它们在编程实践中有着广泛的应用。让我们逐一深入探讨这些概念。 1. **匿名函数**: 匿名函数是指没有名字的函数,通常作为表达式的一部分存在...

    深入研究JavaScript的匿名函数.doc

    本文将深入探讨匿名函数的概念、用途以及与闭包的关系。 首先,让我们看看如何声明一个匿名函数。在JavaScript中,匿名函数通常通过`function`关键字定义,但不提供名称。例如: ```javascript (function() { // ...

    深度探讨javascript函数的原型链和闭包

    更复杂的是,可以使用`new Function`构造函数创建函数,或者定义匿名函数,如`(function(){ //TODO here})()`,这常用于模块化隔离。内嵌函数(内部函数)允许访问外部函数的变量,这是闭包的基础。 当我们谈论函数...

    JavaScript 匿名函数(anonymous function)与闭包(closure)

    闭包是用匿名函数来实现。闭包就是一个受到保护的变量空间,由内嵌函数生成。“保护变量”的思想在几乎所有的编程语言中都能看到。 先看下 JavaScript 作用域: JavaScript 具有函数级的作用域。这意味着,不能在...

    JavaScript中匿名函数的用法及优缺点详解_.docx

    - 函数式编程:匿名函数是JavaScript函数式编程的核心,例如高阶函数、闭包、柯里化等概念都离不开匿名函数。 5. 匿名函数的优缺点: - 优点:提高代码的封装性,减少全局变量,提高代码的安全性和可维护性,适用...

    浅谈Javascript嵌套函数及闭包

    }}`中,`makeFunc`返回的匿名函数创建了一个闭包,它记得变量`x`的值,并能在每次调用时增加这个值。 在JavaScript中,闭包经常用于创建私有变量和方法,这在模块化编程中非常有用。闭包还能保持变量的状态,使得...

Global site tag (gtag.js) - Google Analytics