本文讲解的是javascript最基础也是最重要的东西--函数,之因此写这篇博文,是由于面试的时候问到了,也算是温故而知新了。javascript
先上个例子,若是你看懂了,说明你已经理解了本文要讲的。html
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,严格模式对函数有一些限制:java
发生以上状况就会致使语法错误,代码没法执行。面试
函数定义分为三种数组
一、构造函数闭包
var fun = new Funciton();函数
二、普通定义spa
function fun() {}设计
三、函数式定义code
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() {}
函数调用是经过函数名来调用,匿名函数怎么调用呢?一种就是将匿名函数赋给一个变量,让这个变量充当函数名。另外一种就是用()来调用,例以下面三种方法
一、(function() {return;}());
二、(function() {return;})();
三、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。