JavaScript之函数(匿名函数和函数表达式)详解以及arguments对象的使用

什么是函数

把一段相对独立的具有特定功能的代码块封装起来,形成一个独立实体,就是函数,起个名字(函数名),在后续开发中可以反复调用
函数的作用:代码的重用

函数的定义

1.函数声明
function 函数名(){
    函数体;
}
函数声明的时候,函数体并不会执行,只要当函数被调用的时候才会执行。

函数的调用

函数名();
函数体只有在调用的时候才会执行,可以多次调用。
function sayHi() {
  console.log("世界上另一个我?");
}
// 调用函数
sayHi();

函数的参数

1.在函数定义的时候,函数名字后面小括号里面的变量就是参数,目的是函数在调用的时候,对用户传进来的值进行操作
2.形参:函数在定义的时候,小括号里面的变量就是形参
2.实参:函数在调用的时候,小括号里面传入的值就是实参,实参可以是变量也可以是值
function 函数名(形参1, 形参2, 形参...){
     函数体
}
带参数的函数调用:函数名(实参1, 实参2, 实参3);

注意事项

1.函数需要先定义,才能使用
2.函数名的命名要遵从驼峰命名法
3.函数一旦重名,会把前面的函数覆盖掉
3.Ctrl+鼠标左键---->转到定义处

函数的返回值及函数表达式

在这里插入图片描述
在这里插入图片描述

当函数执行完的时候,并不是所有时候都要把结果打印。我们期望函数给我一些反馈(比如计算的结果返回进行后续的运算),这个时候可以让函数返回一些东西。也就是返回值。函数通过return返回一个返回值
语法:
1.声明一个带返回值的函数
function 函数名(形参1, 形参2, 形参...){
  //函数体
  return 返回值;
}

2.可以通过变量来接收这个返回值
var 变量 = 函数名(实参1, 实参2, 实参3);
注意:
1.如果一个函数中有return,那么这个函数就有返回值
2.如果一个函数中没有return,那么这个函数就没有返回值
3.如果一个函数中没有明确的返回值或者没有返回值,那么调用的时候接收了,结果就是undefined
(没有明确的返回值:函数中没有return;函数中有return,但是return中没有任何内容)
4.变量声明了,没有赋值,结果也是undefined
5.return后面的代码不会执行

    function f1() {
         console.log("光辉岁月");
         return 100;
       }
       //f1函数调用,把函数的返回值输出了
       console.log(f1());

    function f1() {
         console.log("光辉岁月");
         return 100;
       }
       console.log(f1);//输出的f1函数名字-----是f1函数的代码

函数练习

   /**
     *  这中间是用来写注释的,用/**+回车即可出现
     * @param array
     * @returns 
     */
1.求一组数字中的最小值
    function getArrayMin(array) {
      //假设这个变量里存储的是最小值
      var min = array[0];
      for (var i = 0; i < array.length; i++) {
        if (min > array[i]) {
          min = array[i];
        }
      }
      return min;
    }
    //测试----调用函数并传入一个数组,把数组中的最小值直接显示出来
    console.log(getArrayMin([10, 20, 30, 40, 1]));
 2.通过函数实现数组反转
    function reverseArray(arr) {
      for (var i = 0; i < arr.length / 2; i++) {
        var temp = arr[i];
        arr[i] = arr[arr.length - 1 - i];
        arr[arr.length - 1 - i] = temp;
      }
      return arr;
    }
    console.log(reverseArray([1, 2, 3, 4, 5]));
3.求一个数字的阶乘
    function getJieCheng(num) {
      var result = 1;
      for (var i = 1; i <= num; i++) {
        result *= i;
      }
      return result;
    }
    console.log(getJieCheng(5));//1*2*3*4*5
4.求一个数字的阶乘和 (函数内部可以调用其他的函数)
     function getJieChengSum(num) {//5
      var sum=0;//和
      for(var i=1;i<=num;i++){
        sum+=getJieCheng(i);
      }
      return sum;
    }
    console.log(getJieChengSum(5));
5.求斐波那契数列  12---144
    //1 1 2 3 5 8 13 21 34 55 89 144
    function getFib(num) {
      var num1=1;
      var num2=1;
      var sum=0;
      for(var i=3;i<=num;i++){
        sum=num1+num2;
        num1=num2;
        num2=sum;
      }
      return sum;
    }
    console.log(getFib(12));

arguments的使用

JavaScript中,arguments对象是比较特殊的一个对象,实际上是当前函数的一个内置对象;也就是说所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有的实参;arguments是一个伪数组,因此可以进行遍历
    function f1() {
      //arguments----->数组使用------伪数组---
      var sum=0;
      for(var i=0;i<arguments.length;i++){
        sum+=arguments[i];
      }
      return sum;
    }
    console.log(f1(10,20,30));
   * 命名函数:函数如果有名字,就是命名函数
   * 匿名函数:函数如果没有名字,就是匿名函数
1.函数的另一种定义方式:
   * 函数表达式: 把一个匿名函数给一个变量,此时形成了函数表达式
   * var 变量=匿名函数;
   var f1=function (){
   };
   * 如果是函数表达式,那么此时前面的变量中存储的就是一个函数,而这个变量就相当于是一个函数,就可以直接加小括号调用了
   * f1();
注意:
   * 函数表达式后面,赋值结束后,要加分号
2.函数的自调用:没有名字,调用---声明的同时,直接调用
      (function () {
      console.log("嘎嘎")
    })();
3.函数也是一种数据类型
   function f1() {
      console.log("我是函数");
    }
    console.log(typeof f1);
    //函数是有数据类型,数据类型:是function 类型的
4.函数可以作为参数使用,如果把一个函数作为参数,那么我们说这个参数(函数)叫回调函数
      function sayHi(fn) {
      console.log("您好啊");
      fn();   // fn此时应该是一个函数
    }
    function suSay() {
      console.log("我很好!");
    }
    sayHi(suSay);
5.函数作为返回值使用
  function f1() {
      console.log("f1函数调用了");
      return function () {
        console.log("这是一个函数");
      };
    }
    var ff=f1();//调用
    //ff就是一个函数了
    ff();



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值