7、函数
(1)、参数类型
number、string、Boolean、Object、Array、Function
实例1-1:传入参数判断
function fn2(a, b) { var typ = typeof a; //对参数的类型进行判断 if((typeof a) != "number" || (typeof b) != "number") { console.error("传入类型有误!"); return; //返回 } //对参数进行操作 var res = a - b; alert(res); } //调用函数 fn(2, 1);
注意:函数的参数是由程序员根据实际情况定义。形参(相当于代码中的变量),实参(传入的值)。传值时,要注意参数的个数以及类型。
匿名函数
语法:
var 变量名 = function() {};
作用:
匿名函数使用在以函数作为参数和函数作为返回值的地方。
代码:
var fn = function() { console.log("函数的另一种定义方式,使用匿名函数给变量赋值"); }; //函数的调用 fn();
函数重名
javascript中,没有函数重载的概念。如果出现了相同的函数名,后面的函数会覆盖前面的"同名"函数。
function fx(a, b) { alert(a + b + "第一个"); } function fx(x, y, z) { alert(x + y + "第二个"); } fx(123, 12); //得到的结果会是调用第二个函数 135
递归函数
自己调用自己,关键点找到递归函数的出口。缺点:效率非常慢。
示例1-1:求数列1,1,2,3,5,8,13......;第30位上的值。
数学思路:n = F(n-1) + F(n-2),n>2;
F1 = F2 = 1;
function fblq(n) {
//前1 2 位都为 1
if(n==1 || n==2) {
return 1;
}
else {
return fblq(n-1) + fblq(n-2);
}
//调用裴波拉契函数
var res = fblq(30);
alert(res);
(2)、参数传入
a、对象和数组作为参数
function fn3(obj, arr) { //输出对象的属性值 console.log(obj.name); //遍历数组的值 for(i in arr) { console.info(arr[i]); } } //定义对象 var dx = { name: "小明"; age: 123; }; //定义数组 var a = [1, 23, 12, 23]; //调用函数 fn3(dx, a);
b、用函数来代替参数
//声明函数功能 function fp(x, y) { console.warn("演示函数作为参数"); } //调用参数(函数)的函数 function fn4(ff) { console.log("准备调用传入的函数"); ff(); } //将函数名做参数值传入 fn4(fp);
注意:“回调函数”,以函数做参数。
如果参数是函数,只需要函数名。
c、关于“形参”的数量和“实参”数量的判断
function fn5(a, b, c, d) { //实际传入形参的数量 var n = arguments.length; //函数定义的“形参”的数量 var m = fn5.length; if(n!=m) { console.error("参数个数不一致"); return; } console.log(n); console.info(m); } fn5(1, 2);
(3)、函数的返回值
返回值的类型:number、string、Boolean、Array、object、Function
作用:将函数的内部的数据,带到函数外部,return x;结束当前的函数,return;
注意:写在return后面的代码将不会执行。
a、函数的返回值
function add(a, b) { var x = a + b; return x; } var res = add(3, 2); alert(res);
b、对象作为返回值
function test() { var obj={ ss: "123", data: "呵呵", }; //返回对象 return obj; } var temp = test(); //对象调用属性 alert(temp.data);
c、函数作为返回值
//演示函数作为返回值的函数 function fnReturn(a, b) { console.log("演示函数作为返回值的函数" + a + b); } //函数作为返回值,只写函数名 function fn1() { console.info("即将演示函数作为返回值"); return fnReturn; } var res = fn1(); res(12, 211);
匿名函数作返回值:
//演示函数作为返回值的函数 function fnReturn(a, b) { console.log("演示函数作为返回值的函数" + a + b); } //函数作为返回值,只写函数名 function fn1() { console.info("即将演示函数作为返回值"); return function() { console.warn("匿名函数"); }; } var res = fn1(); res(12, 211);