初识函数
函数可以复用代码,代码可以是多行,可以在任何地方、任何时候调用或执行。
定义函数:
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();