javascript函数4.0

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);

 

posted @ 2020-08-12 11:41  上天安排的最大嘛!  阅读(134)  评论(0编辑  收藏  举报