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。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值