js中的匿名函数与必包

之前就看过关于js中匿名函数与闭包的文章,始终是不太明白,今天看《JavaScript高级编程第二版》时又看到了这方面的介绍,终于弄懂了。

所谓匿名函数就是没有名字的函数,也叫lamda函数,这不是js所有的,其它很多高级编程语言都有匿名函数。正常情况下函数应该这样定义:

1 function fun1(){
2      alert("这是一个正常的函数");
3 }

这就是函数的声明与实现。而匿名函数是这样定义的:

1 var fun1 = function(){
2      alert("这是一个匿名函数");
3 }

源代码

从以上的比较中可以看出来,匿名函数没有名字,只有把它赋值给一个变量,才能在以后的代码中调用的(注意这里的以后两个字,因为匿名函数在定义时就可以执行,只要在最后加上圆括号就可以)。匿名函数主要是当做一个参数传递给其它函数。

闭包是有权访问另一个函数作用域中的变量的函数。如下:

function createFun(name){
    return function () {
        alert(name);
    };
}

var fun1 = createFun("test");
fun1();

createFun函数执行时返回一个函数,并赋值给变量fun1,然后执行这个函数。但是正常情况下,这个返回的函数在执行时,是没有name这个变量的,但是因为闭包,所以它可以访问,其实这里是因为这个返回的函数内有一个作用域链,所以可以访问创建它的函数的作用域中的变量。

时间: 2024-10-10 01:13:45

js中的匿名函数与必包的相关文章

js中的匿名函数自执行

随笔,java中因为有修饰符的存在,那就有private类的存在,js不一样,没有修饰词一说,因此为了防止全局变量的污染,js中就出现了匿名函数,直接上code,看到的人可以自己体会: (function () { console.log("aaa");})();(function (a) { console.log(a);})("aaa"); 上面是2种写法,作用是完全相同的,不过有时候需要把全局的参数带进去的时候就可以直接采用带参的写法,这样写的另一个目的是函数

JS中的匿名函数

整理自:http://www.cnblogs.com/playerlife/archive/2012/10/17/2727683.html 一.什么是匿名函数? 在Javascript定义一个函数一般有如下三种方式: ①:函数关键字(function)语句:function fnMethodName(x) { alert(x); } ②:函数字面量(Function Literals)var fnMethodName = function (x) { alert(x); } ③:Function

node.js中的匿名函数, 回调函数和嵌套函数

定义一个函数相信大家已经很熟悉了, 在javascript里的函数也是非常重要的, 使用率非常高, 有几种函数不是很好理解 一, 匿名函数 var remove = function(num1) { return num1; } var fun = remove(5); console.log(fun); 这里定义的这个函数没有设置函数名, 在使用的时候要使用变量调用这个函数. 最后的输出结果: 5 二, 回调函数, 传递的参数可以定义成任意的对象, 而在这里, 其中的一个参数就是一个函数 fu

JS中关于把函数作为另一函数的参数的几点小总结

//JS中关于把函数作为函数的参数来传递的问题的小总结//第一,最简单的形式无参函数,直接形式函数的函数名放到括号中,再在执行部分这个函数即可.//当然调用时要穿另一个真正的定义好的函数/*function test1(Func){Func();}function test2(){alert("我是test2");}test1(test2);*/ //第二种,带参数的普通调用法.跟第一种唯一的区别就是在定义主函数的执行语句里调用参数函数时该把参数加上/*function test1(F

转:php中的匿名函数和闭包(closure)

一:匿名函数 (在php5.3.0 或以上才能使用) php中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 允许指定一个没有名称的函数.最常用的就是回调函数的参数值.(http://php.net/manual/zh/functions.anonymous.php) 匿名函数的定义: $closureFunc = function(){ .... }; eg: 把匿名函数赋值给变量,通过变量来调用 $closureFunc = function($s

underscore.js中的节流函数debounce及trottle

函数节流   throttle and debounce的相关总结及想法 一开始函数节流的使用场景是:放止一个按钮多次点击多次触发一个功能函数,所以做了一个clearTimeout setTimeout函数 clearTimeout(cancelTimer); cancelTimer =setTimeout(function(){ switchControl.switchAciontFactory(view, conf); },300) 代码的意思就不做多说了,实际上我无意间实现了一个debou

JavaScript中的匿名函数及函数的闭包以及作用域

1. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85

js中字符替换函数String.replace()使用技巧

String.replace( ) 简介 语法: var strings = string.replace(regexp, replacement) regexp :您要执行替换操作的正则表达式,如果传入的是一个字符串,那就会当作普通字符来处理,并且只会执行一次替换操作:如果是正则表达式,并且带有 global (g) 修饰符,则会替换所有出现的目标字符,否则,将只执行一次替换操作. replacement :您要替换成的字符. 返回值是执行替换操作后的字符串. 11 String.replac

JS中的定时函数(setTimeout,clearTimeout,setInterval,clearInterval详解 )

设置定时器,在一段时间之后执行指定的代码,setTimeout与setInterval的区别在于setTimeout函数指定的代码仅执行一次 方法一: window.setTimeout("alert('ok')",5000); 方法二: window.setTimeout(function() { alert("Ok"); }, 5000); 方法三: function showAlert() { alert("ok"); } window.s