一、函数介绍
函数也可以称作方法,是将具有特定功能的代码写在一块。
函数作用:提高代码的重用率以及可维护性。
二、语法
function 函数名(参数1,参数2,……,参数n){ //具体的功能代码 }
函数的调用:函数名(值1,值2,……,值n);
注意:1.函数的参数,是由程序员根据实际情况定义,称为:“形参”;相当于代码中的变量。
2.调用函数时:传入的值,称为 “实参”,可以确定参数的值和类型。传值时 要注意参数个数以及类型,否则会出错。
参数包括:number、string 、Boolean 、 Object、Array、function
实例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <body> </body> <script type="text/javascript"> function fn2(a,b){ var typ= typeof a; if(typ!="number" || (typeof b) !="number"){ console.error("传入类型有误!") return;//返回; } var res= a+b; document.write(res); } fn2(2,3);//5</script> </html>
输出结果为:5.
注意:以函数做参数,往往称为“回调函数”。如果参数是 函数,只需要出入 函数名。
以参数作为函数实例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <body> </body> <script type="text/javascript"> //作为参数的函数 function fp(x,y){ document.write("演示函数作为参数"); } function fn4(ff){ //使用 ff 函数 document.write("准备调用 传入的函数"); document.write("===================<br>"); ff(); } //以函数做参数,往往称为“回调函数” //如果参数是 函数,只需要出入 函数名 fn4(fp); </script> </html>
关于函数“形参”的数量和“实参”的数量 的判断:
1.arguments.length; // 实际传入参数的 数量
2.函数名.length 函数定义的 “形参”的数量
实例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> </body> <script type="text/javascript"> function fn5(a,b,c,d){ var n= arguments.length;//实际传入参数的 数量 var m= fn5.length;// 函数定义的 “形参”的数量 if(n!=m){ alert("参数个数不一致"); return; } document.write(n); document.write(m); } fn5(1,2); </script> </html>
输出结果为:参数个数不一致;
三、函数的返回值问题:
作用:1.将函数内部的数据,带到 函数外部; return x;
2.结束当前的函数。 return;
注意:写在 return; 后面的代码将不会执行。
返回值类型:包含了 js中所有类型
number,string,Boolean,Array,Object,Function
Javascript 中,没有函数重载的概念。 如果出现了相同的函数名,写在后面的函数会覆盖前面的“同名”函数。由于这种机制的存在,为我们修改框架中某些函数,提供了可能。
四、函数递归:自己调用自己,关键点是找到递归函数的出口。缺点:缺点:效率非常慢。
实例: 求 斐波拉契数列第30位的值。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> <script type="text/javascript"> /*求数列1,1,2,3,5,8,13........; 第30位上的值 * Fn=F(n-1)+F(n-2),n>2; * F1=F2=1; * * n:number 第几位 * * */ function fblq(n){ if(n==1 || n==2){ return 1; }else{ return fblq(n-1)+fblq(n-2); } } var res=fblq(30); alert(res); </script> </html>
输出结果:832040
原文:https://www.cnblogs.com/mengwenbiao/p/13510686.html