函数

初识函数

函数可以复用代码,代码可以是多行,可以在任何地方、任何时候调用或执行。

定义函数:

1 function 函数名(){
2      //要执行的代码
3 }

调用函数:

1 函数名();

函数的定义只是告诉计算机有这个函数,但是如果没有调用它的话,那么它就跟不存在一样,不会有任何的效果。相反如果没有定义而直接调用的话,那么就会报错。函数的定义和调用是缺一不可的。

匿名函数

匿名函数就是没有名字的函数。

1 function(){}

不能直接定义一个匿名函数,不然会报错 。

1 function(){
2     console.log(1); //报错
3 }

当匿名函数被事件调用,并且以赋值的形式出现,它才能执行。

1 window.onload=function(){
2      console.log(1);//1
3 }

函数的两种表达方式

函数表达式:

函数表达式可以简单理解为像声明变量那样来声明一个函数。

定义函数表达式:

1 var 变量名=function(){};

调用函数表达式:

1、第一种调用方式

1 变量名();

2、第二种调用方式

1 var 变量名=function(){
2     alert(1); //1
3 }();//在末尾加一对小括号代表直接调用

函数表达式在定义的时候,如果function后面有名字的话(这个名字没有什么意义,可以当作不存在),是不能拿这个名字去调用函数的,否则会报错。

函数声明:

函数声明就是命名函数,通俗一点就是有名字的函数。

定义函数声明:

1 function 函数名(){
2      //要执行的代码
3 }

调用函数声明:

1 函数名();

其他调用方式:

1 (function 函数名(){})();
2 !(function 函数名(){})();
3 ~(function 函数名(){})();
4 +(function 函数名(){})();
5 -(function 函数名(){})();

函数参数

从函数外面,向函数里面传递的数据,传递的数据可以在函数内部使用,这个数据就叫参数 。

1 function fn(a){
2     console.log(a); //10
3 }
4 fn(10);//10就是要往函数里传递的数据

函数的参数分为形参和实参。形参是声明函数时候的参数,它只能在函数内部去使用。实参是在函数调用的时候实际传入的参数。可以把形参当作是一个变量,它的值取决于实参(调用函数时的参数),实参传的是什么,形参就是什么。

1            形参
2 3 function fn(a){
4     console.log(a); //10
5 }
6 fn(10);
7 8    实参

函数的参数可以是多个,中间用逗号隔开。实参必需与形参一一对应,如果定义函数的时候有形参,但是在调用函数的时候,没有给对应的实参。那么那个形参就为undefined。

1 function fn(a,b,c){
2     console.log(a);//1
3     console.log(b);//2
4     console.log(c);//undefined,因为c没有对应的实参
5 }
6 fn(1,2);

arguments

arguments代表了所有参数(实参)的集合,它与形参没有关系,它是类数组(类数组:拥有数组的某些特性,如:length、可以通过下标获取某个元素,类数组不能使用数组的方法)。

1 function fn(){
2     console.log(arguments);//[1,2,3,4,5],所有实参的集合
3 }
4 fn(1,2,3,4,5);

arguments只能在函数内部使用,它有一个length属性,代表传进去参数的个数。

1 function fn1(){
2     console.log(arguments.length);//3
3 }
4 fn1(1,'a',30);

函数返回值

每个函数调用后,都会有返回值,如果在函数内部使用了return,那这个函数返回的结果就是return后面的值。如果函数内部没有使用return,那这个函数的返回值就是undefined。

使用return:

1 function fn(){
2     return 1+1;//return会返回计算后的结果
3 }
4 console.log(fn());//2

不使用return:

1 function fn(){
2     1+1;
3 }
4 console.log(fn());//undefined

return只能用在函数里,它能够阻止函数继续运行,return后面的代码是不会运行的。

1 function fn(){
2     var a=5;
3     if(a==5){
4         return;//代码走到这以后就停止了,以下的代码都不会被执行
5     }
6     console.log(1);//没有反应
7 }
8 fn();
原文地址:https://www.cnblogs.com/imguo/p/5759439.html