javascript匿名函数

简介: 摘要:     本文讲解的是javascript最基础也是最重要的东西--函数,之所以写这篇博文,是因为面试的时候问到了,也算是温故而知新了。 先上个例子,如果你看懂了,说明你已经理解了本文要讲的。

摘要:

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

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

 1 var f = (function() {
 2 
 3     function f() {return 10;}
 4 
 5     return f();
 6 
 7     function f() {return 20;}
 8 
 9     var f = 30;
10 
11 })();
12 
13 console.log(f);

 

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

  1. 不能把函数命名为eval或arguments
  2. 不能把参数命名为eval或arguments
  3. 不能出现两个命名参数同名的情况

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

函数定义

函数定义分为三种

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会返回函数的参数个数。

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

函数不能重载,只能重写

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

 1 function add(num) {
 2 
 3     return num + 100;
 4 
 5 }
 6 
 7 function add(num) {
 8 
 9     return num + 200;
10 
11 }
12 
13 var result = add(100) //300

 

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

函数种类

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

function fun() {

}

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

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

function() {}

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

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

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

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

例子:

1 (function(x, y) {
2 
3     ​alert(x + y);
4 
5 })(2,3);
6 
7 //alert(5)

 

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

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

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

 1 var f = (function() {
 2     var f;
 3     function f() {
 4         return 10;
 5     }
 6     function f() {
 7         return 20;
 8     }
 9     return f();
10     f = 30;
11 })(); 

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

 

相关文章
|
7月前
|
JavaScript 前端开发
js 匿名函数 中无法正常进行 异常捕获
js 匿名函数 中无法正常进行 异常捕获
32 1
|
11月前
|
JavaScript 前端开发
认识JavaScript中的闭包和匿名函数
认识JavaScript中的闭包和匿名函数
64 0
|
前端开发 JavaScript Serverless
前端祖传三件套JavaScript的函数之匿名函数
在JavaScript中,函数是实现各种功能和业务逻辑的基本手段。除了常规的函数声明和函数表达式外,JavaScript还支持匿名函数的定义方式。在这篇文章中,我们将介绍JavaScript中的匿名函数,以及其使用方法和注意事项
86 0
|
JavaScript 前端开发
JavaScript函数篇之ES6箭头函数与匿名函数
对于箭头函数,this 关键字始终表示定义箭头函数的对象。
121 0
|
JavaScript 前端开发
重学JavaScript之匿名函数
重学JavaScript之匿名函数
|
存储 JavaScript 前端开发
到现在还有人不知道JavaScript匿名函数嘛
到现在还有人不知道JavaScript匿名函数嘛
153 0
到现在还有人不知道JavaScript匿名函数嘛
|
JavaScript 前端开发
javascript匿名函数
javascript匿名函数
|
JavaScript 前端开发 PHP
学习javaScript必知必会(1)~js介绍、函数、匿名函数、自调用函数、不定长参数
学习javaScript必知必会(1)~js介绍、函数、匿名函数、自调用函数、不定长参数
176 0
|
JavaScript 前端开发
理解下JavaScript中的匿名函数、自执行匿名函数
本文目录 1. 函数也是一种类型 2. 匿名函数 3. 自执行匿名函数 4. 小结
145 0
|
JavaScript 前端开发 程序员
好程序员前端教程之JavaScript闭包和匿名函数的关系详解
好程序员前端教程之JavaScript闭包和匿名函数的关系详解本文讲的是关于JavaScript闭包和匿名函数两者之间的关系,从匿名函数概念到立即执行函数,最后到闭包。下面一起来看看文章分析,希望你会喜欢。
1074 0