`
huangyongxing310
  • 浏览: 481984 次
  • 性别: 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
分享到:
评论

相关推荐

    JS匿名函数、闭包

    匿名函数,也称为拉姆达函数,是一种使用JavaScript...JavaScript中的匿名函数和闭包都是非常有用的特性,利用它们可以实现很多功能。不过,因为创建闭包必须维护额外的作用域,所以过度使用它们可能会占用大量内存。

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

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

    javaScript匿名函数

    本文将对 JavaScript 匿名函数的定义、创建、调用方式、闭包的概念等进行详细的介绍。 一、函数的定义 在 JavaScript 中,函数可以定义的方式有多种。第一种方式是使用 function 关键字,例如: ``` function ...

    详解JavaScript匿名函数和闭包

    在JavaScript前端开发中,函数与对其状态即词法环境(lexical environment)的引用共同构成闭包(closure)。也就是说,闭包可以让你从内部函数访问外部函数作用域。在JavaScript,函数在每次创建时生成闭包。匿名...

    javascript笔记之匿名函数和闭包

    本文介绍了js匿名函数和闭包的相关内容,供大家参考,具体内容如下 匿名函数 [removed] //function(){}//会报错 var fun = function(){};//将匿名函数赋值给变量 (function(){})();//匿名函数自执行 function...

    JavaScript 匿名函数和闭包介绍

    主要介绍了JavaScript 匿名函数和闭包介绍,需要的朋友可以参考下

    详谈JavaScript 匿名函数及闭包

    本文详细介绍了匿名函数、闭包、并给出了详细的例子以及详细的注意事项,是篇非常非常不错的文章,推荐给大家。

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

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

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

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

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

    NULL 博文链接:https://xieyaxiong.iteye.com/blog/1558277

    浅析Javascript匿名函数与自执行函数

    函数是JavaScript中最灵活的一种对象,这里只是讲解其匿名函数的用途。匿名函数:就是没有函数名的函数。 函数的定义,大致可分为三种方式: 第一种:这也是最常规的一种 function double(x){ return 2 * x; } 第二...

    浅谈JavaScript for循环 闭包_.docx

    我们可以将变量i保存在匿名函数自身,然后在onclick事件中使用arguments.callee.i来获取该元素的序号。 3、加一层闭包,i以函数参数形式传递给内层函数 我们可以使用闭包将变量i传递给内层函数,然后在onclick事件...

    深入理解JavaScript 中的匿名函数((function() {})();)与变量的作用域

    匿名函数:没有实际名字的函数。 匿名函数的作用: 1、通过匿名函数可以实现闭包,关于闭包在后面的文章...本章节重点给大家介绍JavaScript 中的匿名函数((function() {})();)与变量的作用域,具体内容如下所示: 以前

    JavaScript闭包函数访问外部变量的方法

    主要介绍了JavaScript闭包函数访问外部变量的方法,本文使用匿名函数来实现在闭包中访问外部变量,需要的朋友可以参考下

    JavaScript function函数种类详解

    本篇主要介绍普通函数、匿名函数、闭包函数 目录 普通函数:介绍普通函数的特性:同名覆盖、arguments对象、默认返回值等。 匿名函数:介绍匿名函数的特性:变量匿名函数、无名称匿名函数。 闭包函数:介绍闭包...

Global site tag (gtag.js) - Google Analytics