JavaScript函数

在这里插入图片描述

1.函数定义

JS中用 function 关键字来声明函数。函数的定义和Java类似分为两种方式:命名函数、匿名函数。命名函数即是有函数名,匿名函数即没有函数名,匿名函数要被调用的话必须被一个变量接收,或者自调用。

    function f1() {
        alert("命名函数")
    }
    // 命名函数调用通过函数名()
    f1();
   
    // 匿名函数需要赋值给变量,组成函数表达式才能使用,后面需要加分号
    // 此时f2就是一个函数
    var f2 = function () {
        alert("匿名函数")
    };
    // 匿名函数调用通过变量()
    f1();

2.函数覆盖

JS中是不支持函数的重载的,同名函数后面的函数会覆盖前面的函数,因为函数中维护着arguments 对象,它是函数内部的一个类数组对象,它里面保存着调用函数时,传递给函数的所有参数。对应传入的实参个数没有限制。但是可以通过模拟来实现函数重载。

    // 命名函数
    function f1() {
        console.log("第一个f1");
    }
   
    function f1() {
        console.log("第二个f1");
    }
   
    f1(); // 第二个f1
    // 匿名函数
    var f2 = function () {
        console.log("第一个f2");
    };
    f2(); //第一个f2
    f2 = function () {
        console.log("第二个f2");
    };
    f2(); //第二个f2

由于匿名函数没有函数名,所以就不存在同名覆盖的问题,以上代码相当于变量f2重新被赋值为一个新的匿名函数。

函数重载模拟

  1. 通过arguments对象
  2. …待续
    function f1() {
        if (arguments.length == 1){
            
        } else if (arguments.length == 2 ){
            
        } 
        ...
    }

通过传入实参个数控制执行逻辑,比较鸡肋,这种重载模拟和Java中的方法重载概念还是有很大差别的,Java中是有多个同名方法,但参数类型或者参数个数不同。

3.函数的自调用

匿名函数除了可以赋值给变量外,还可以自己调用自己,自调用函数只能被执行一次。

    //函数被调用
    (function f() {
        alert("匿名函数f")
    })();

4.函数也是一种数据类型

通过typeof查看函数类型,发现函数是function 类型。

    function f() {
        // ...
    }
    console.log(typeof f);//function

5.函数作为参数使用

由于函数的形参是不限制参数类型及个数的,既然函数也是一种数据类型,那么也可以作为参数使用。如果一个函数作为参数,那么我们说这个参数(函数)可以叫回调函数

    //此时函数形参是一个函数
    function f(f1) {
        //函数f1被调用
        f1();
        console.log("f调用");
    }
    function f1() {
        console.log("f1调用")
    }

    f(f1);
    //f1调用
    //f调用

    // 上面的写法其实和这种方式等同
    var f1 = function f1() {
       console.log("f1调用")
    };

    f(f1);
    //f1调用
    //f调用

由于f()被调用时,传入的参数f1是一个函数,所有f()函数内部可以通过函数名f1调用f1函数。

6.函数作为返回值使用

函数的返回值可以是一个函数。

    function f() {
        return function () {
            console.log("作为返回值得函数调用");
        }
    }

    var temp = f();
    temp();//作为返回值得函数调用

简单整理,如有问题恳请指正。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值