2021-07-17

函数声明方法

函数声明方法有三种
第一种:直接声明函数

<script>
    function fn(){
        console.log("我在名叫fn函数内部!");
    }
</script>

第二种:用一个参数去储存函数

<script>
    var fn=function(){
        console.log("我在名叫fn函数内部!");
    }
</script>

第三种:Function构造函数

var fn = new Function("return 5");

这段话相当于

function fn1() {
        return 5;
    }

函数返回值

函数返回用return,可以返回多种类型的变量,一般情况下,有了return之后,函数一下的内容将不会执行,比如:

<script>
    function fn1() {
        return 5;//只返回5.不再返回一下的语句
        var a=3
        return a;
    }
</script>

但是,如果是用try catch和finally语句的话就特殊处理

函数调用模式和方法调用模式

函数调用模式

<script>
    function fn1(x,y) {
        return x+y;
    }
    var sum=fn(1,2);
    console.log(sum);//3
</script>

直接用名字并且传参数进去即可,js中函数的this,在非严格模式下一般是window对象,所以要注意this的全局污染,因为外部的this也可以改变函数里面的this

方法调用模式

<script>
    //方法调用模式
    var obj = {
        fn: funciton() {
            console.log("被调用了");
        }
    }
    obj.fn();
</script>

构造函数调用模式和间接调用函数模式

函数参数

js中对函数参数的类型不着重考虑,个数也没有限制,实参比形参多的时候,会按形参的前几个来选择实参的前几个,多余 的将不考虑,js为了不让多余的造成实际误差,用了argument来对参数进行处理,具体用法如下:

<script>
    function fn() {
        console.log(arguments[0] + arguments[1] + arguments[2] + arguments[3]);
    }
    fn(1, 2, 3, 4);//10
</script>

arguments利用[]来对参数进行访问,并且有length属性

函数不存在重载

重载:相同的函数名,不同的参数数量,因为js不在意参数个数和类型,所以没有重载,但是利用arguments.length属性结合if语句可以对js的函数参数进行区分,从而实现重载,比如:

<script>
    function fn() {
        if (arguments.length == 1) {
            console.log("执行这一条语句");
        } else if (arguments.lenght == 2) {
            console.log("执行第二条语句")
        }
    }
    fn(1); //执行这一条语句
</script>

当有对多个不同参数数量的函数执行不同语句时,建议使用switch

函数参数传递

  1. 基本数据类型
    在向参数传递基本数据类型的时候,被传递的值会被复制到另一个局部变量,例如:
function fn(num){
    num=num+10;
    return num;
  }
  var count=20;
  fn(count);//30,count的值会被复制一遍传给num局部变量

函数属性

函数augments的length属性是实参是实际传入的参数的个数,而函数length属性是形参的个数,可以类似的把函数当做对象,具有length属性和name属性和prototype(原型),可以用fn.prototype.name属性等等对函数就行修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值