javascript匿名函数实例分析

本文实例讲述了javascript匿名函数的用法。分享给大家供大家参考。具体分析如下:

摘要:

本文讲解的是javascript最基础也是最重要的东西--函数,之所以写这篇文章,是因为面试的时候问到了,也算是温故而知新了。

先上个例子,如果你看懂了,说明你已经理解了本文要讲的。

代码如下:

var f = (function() {

function f() {return 10;}

return f();

function f() {return 20;}

var f = 30;

})();

console.log(f);

javascript高级程序设计中这样描述函数--可以封装任意多条语句,而且可以在任何地方、任何时候调用执行。之前介绍过了strict mode,严格模式对函数有一些限制:

① 不能把函数命名为eval或arguments
② 不能把参数命名为eval或arguments
③ 不能出现两个命名参数同名的情况

发生以上情况就会导致语法错误,代码无法执行。

函数定义

函数定义分为三种

1、构造函数

代码如下:

var fun = new Funciton();

2、普通定义

代码如下:

function fun() {}

3、函数式定义

代码如下:

var fun = function() {};

这三种方式都可以定义函数fun。

参数

函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型。即便你定义的函数只接收两个参数,在调用这个函数时也未必一定要传递两个参数。可以传递一个、三个甚至不传递参数。原因是参数在内部是用一个数组来表示的。在函数体内可以通过arguments对象来访问参数数组,举个例子

代码如下:

function sayHi() {

alert("Hello " + arguments[0] + "," + arguments[1]);

}

通过访问arguments对象的length属性来获知有多少个参数。函数的length会返回函数的参数个数。

注意:所有参数传递的都是值,不可能通过引用传递参数。

函数不能重载,只能重写

如果定义了两个名字相同的函数,则该名字只属于最后定义的函数,举个例子:

代码如下:

function add(num) {

return num + 100;

}

function add(num) {

return num + 200;

}

var result = add(100) //300

注意:函数在执行完return语句之后停止并立即退出。

函数种类

函数分为两种一种是有名函数,另一种是匿名函数。例如下面的有名函数

代码如下:

function fun() {

}

如果调用的话,只需要fun()就可以。

匿名函数,顾名思义就是没有函数名。例如

function() {}

函数调用是通过函数名来调用,匿名函数怎么调用呢?一种就是将匿名函数赋给一个变量,让这个变量充当函数名。另一种就是用()来调用,例如下面三种方法

1、(function() {return;}());

2、(function() {return;})();

3、function() {return;}();

例子:

代码如下:

(function(x, y) {

​alert(x + y);

})(2,3);

//alert(5)

2和3将会作为参数传递给x和y

下面就来讲讲最上面的例子,这个例子里面涉及到闭包,后面会说

首先定义一个变量f,然后赋值一个匿名函数,这里呢需要注意一点函数里所有变量的定义都会被前置,所以匿名函数里的执行顺序是

代码如下:

var f = (function() {

​var f = 30;

function f() {return 10;}

function f() {return 20;}

return f();

})();

外面的变量f和里面的变量f不在同一个作用域内(闭包),所以互不影响。​因为函数不能重载,所以外面变量f=(function f() {return 20;})();,所以最终输出的是20。

希望本文所述对大家的javascript程序设计有所帮助。

(0)

相关推荐

  • JavaScript中匿名函数用法实例

    本文实例讲述了JavaScript中匿名函数用法.分享给大家供大家参考.具体分析如下: JS中可以不用给函数名称,而是在使用时直接通过function把函数体赋值给相关的事件或者变量. 下面的JS代码给按钮设定了一个onclick事件,使用了匿名函数 <form action="#"> <input type="button" value="Click Me" id="anonbutton" /> &l

  • JavaScript匿名函数用法分析

    本文实例讲述了JavaScript匿名函数用法.分享给大家供大家参考.具体如下: 一.定义一个函数 在JavaScript中,可以通过"函数声明"和"函数表达式"来定义一个函数,比如 1.通过"函数声明"来定义一个函数 function t1(){} 2.通过"函数表达式"来定义一个函数 t2 = function(){} 但是两种方式定义函数,效果是不同的 t1是函数声明,'词法分析'时,AO.t1 = function()

  • Javascript中的方法和匿名方法实例详解

    本文实例讲述了Javascript中的方法和匿名方法.分享给大家供大家参考.具体分析如下: Javascript方法(函数) 声明函数 以function开头,后跟函数名,与C#.java不同,Javascript不需要声明返回值类型.参数类型.没有返回值就是undefined. 举个例子更清楚:  无参数无返回值的方法: function f1(){ alert('这是一个方法'); } f1();//调用方法 无参数有返回值的方法: function f2(){ return 100; }

  • JavaScript 编写匿名函数的几种方法

    错误模式:语法错误警告 复制代码 代码如下: function(){ // insert code here }(); 模式一:函数字面量 (Function Literal) 先声明函数对象,然后执行. 复制代码 代码如下: (function(){ // insert code here })(); 模式二:优先表达式 (Prior Expression) 由于 JavaScript 按照从内到外的顺序执行表达式,因此使用括号来强制执行已声明的函数. 复制代码 代码如下: (function

  • 详谈JavaScript 匿名函数及闭包

    1.匿名函数 函数是JavaScript中最灵活的一种对象,这里只是讲解其匿名函数的用途.匿名函数:就是没有函数名的函数. 1.1 函数的定义,首先简单介绍一下函数的定义,大致可分为三种方式 第一种:这也是最常规的一种 复制代码 代码如下: function double(x){     return 2 * x;   } 第二种:这种方法使用了Function构造函数,把参数列表和函数体都作为字符串,很不方便,不建议使用. 复制代码 代码如下: var double = new Functio

  • JavaScript中的toUTCString()方法使用详解

    该方法使用通用时间约定一个日期转换为字符串. 语法 Date.toUTCString() 下面是参数的详细信息: NA 返回值: 返回转换日期为字符串,使用通用的时间约定. 例子: <html> <head> <title>JavaScript toUTCString Method</title> </head> <body> <script type="text/javascript"> var da

  • JavaScript 匿名函数和闭包介绍

    匿名函数:没有名字的函数; 闭包:可访问一个函数作用域里的变量的函数; 一 匿名函数 // 普通函数 function box(){ // 函数名是box; return 'Lee'; } box(); // =>Lee; 调用函数; // 匿名函数 function(){ // 匿名函数,会报错; return 'Lee'; } // 通过表达式自我执行 (function(name){ console.log(name); // =>Lee; })("Lee"); //

  • JavaScript合并两个数组并去除重复项的方法

    本文实例讲述了JavaScript合并两个数组并去除重复项的方法.分享给大家供大家参考.具体实现方法如下: Array.prototype.unique = function() { var a = this.concat(); for(var i=0; i for(var j=i+1; j if(a[i] === a[j]) a.splice(j, 1); } } return a; }; //Demo var array1 = ["a","b"]; var ar

  • javascript匿名函数实例分析

    本文实例讲述了javascript匿名函数的用法.分享给大家供大家参考.具体分析如下: 摘要: 本文讲解的是javascript最基础也是最重要的东西--函数,之所以写这篇文章,是因为面试的时候问到了,也算是温故而知新了. 先上个例子,如果你看懂了,说明你已经理解了本文要讲的. 复制代码 代码如下: var f = (function() { function f() {return 10;} return f(); function f() {return 20;} var f = 30; }

  • JS匿名函数实例分析

    本文实例讲述了JS匿名函数.分享给大家供大家参考,具体如下: /* 匿名函数*/ (function() { var foo = 10; var bar = 2; alert(foo * bar); })(); /* 匿名函数,带参数 */ (function(foo, bar) { alert(foo * bar); })(10, 2); /* 匿名函数返回值 */ var baz = (function(foo, bar) { return foo * bar; })(10, 2); //

  • javascript匿名函数应用示例介绍

    javascript匿名函数,就是说个函数没有名字,下面先列出测试代码 复制代码 代码如下: /* * 一般常见函数是这样 */ function debug(data) { console.log(data); } 但有的函数,它却偏偏写成了这样 复制代码 代码如下: (function(x, y) { debug(x + y); }) 上面就是所说的匿名函数了 复制代码 代码如下: var fun = null; (function() { var test = function(x ,y

  • JavaScript hasOwnProperty() 函数实例详解

    hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的属性.如果有,返回true,否则返回false. 该方法属于Object对象,由于所有的对象都"继承"了Object的对象实例,因此几乎所有的实例对象都可以使用该方法. IE 5.5+.FireFox.Chrome.Safari.Opera等主流浏览器均支持该函数. 语法 object.hasOwnProperty( propertyName ) 参数 参数 描述 propertyName Str

  • javascript匿名函数中的'return function()'作用

    我最近看到很多javascript代码,看起来我错了.在这种情况下,我应该建议哪种更好的代码模式?我将重现我所看到的代码和每个代码的简短说明: 代码块#1 该代码不应该评估内部函数.程序员会因为代码应该运行而感到困惑. $(document).ready( function() { return function() { /* NOPs */ } }); 代码块#2 程序员可能打算实现一个自调用功能.他们没有完全完成实现(他们在嵌套括号的末尾缺少一个().另外,由于它们在外部函数中没有做任何事情

  • 详解JavaScript匿名函数和闭包

    概述 在JavaScript前端开发中,函数与对其状态即词法环境(lexical environment)的引用共同构成闭包(closure).也就是说,闭包可以让你从内部函数访问外部函数作用域.在JavaScript,函数在每次创建时生成闭包.匿名函数和闭包可以放在一起学习,可以加深理解.本文主要通过一些简单的小例子,简述匿名函数和闭包的常见用法,仅供学习分享使用,如有不足之处,还请指正. 普通函数 普通函数由fucntion关键字,函数名,() 和一对{} 组成,如下所示: function

  • 通过javascript的匿名函数来分析几段简单有趣的代码

    1.简单形式的封装调用 复制代码 代码如下: var userName = function() { return "jeff wong" } (); alert(userName); 上面的代码确实简单,我们可以逐步分解成下面的写法: 复制代码 代码如下: var anonymousFunc = function() { return "jeff wong" }; //匿名函数 var name = anonymousFunc(); //执行该函数 返回人名 al

  • JavaScript惰性载入函数实例分析

    本文实例讲述了JavaScript惰性载入函数.分享给大家供大家参考,具体如下: 惰性载入函数 惰性载入函数表示函数执行的分支仅会发生一次,有两种实现惰性载入函数的方式,第一种是在函数被调用时再处理,在第一次调用中,该函数会覆盖为另外一个按合适方式执行的函数,这样任何对函数的调用都不用再经过执行的分支了.第二种实现惰性载入的方式是在声明函数时就制定适当的函数,这样,第一次调用函数时就不会损失性能了,而在代码首次加载时会损失一点儿性能. 载入方式一 var flag = 1; function t

  • JavaScript高级函数应用之分时函数实例分析

    本文实例讲述了JavaScript高级函数应用之分时函数.分享给大家供大家参考,具体如下: 一.前提介绍: 某些函数是用户主动调用的,但因为一些客观的原因,这些函数会严重影响页面的性能. 二.应用场景: 在短时间内往页面中大量添加DOM节点显然会让浏览器吃不消,往往会导致浏览器的卡顿甚至假死. 三.解决方案: 以上述添加节点的例子来说明问题,我们将创建节点的工作分批进行,比如把1秒钟创建1000个节点,改为每隔200毫秒创建8个节点. 四.实现代码如下: var timeChunk = func

随机推荐