小白学js第六天之函数

目录

  • 什么是函数
  • 函数的定义
    • 函数的声明
    • 函数表达式
    • 函数的特点
  • 函数的调用
    • 函数调用的语法
    • 函数调用的特点
  • 函数的参数
    • 为什么要有参数
    • 带参数的函数声明
    • 带参数的函数调用
    • 形参
    • 实参
  • 函数的返回值
    • 什么叫返回值
    • 用什么返回一个返回值
    • 声明一个带返回值的函数
    • 用变量接受函数的返回值
    • 返回值详解
  • arguments的使用
  • 其他函数
    • 匿名函数
    • 自调用函数
  • 函数是一种数据类型
    • 函数作为参数时
    • 函数作为返回值时

脑图请戳☟[http://naotu.baidu.com/file/ea908fd3de13189fdc91c60b15256a5b?token=7c52e9f1f081f7fd]

什么是函数

函数是一段有特定功能的代码,可以通过函数名进行重复调用

函数的定义

函数的声明

语法结构

  founction 函数名(){
      // 函数体  ----  一段代码
 }

函数表达式

语法结构

var 变量名 = function 函数名(){
    //函数体
}

函数的特点

  • 函数只是声明的时候,函数体并不会执行。只有函数被调用的时候,函数体内的代码才会被执行。
  • 函数一般都是用来干一件事,所以一般用动词来给函数名命名。

函数调用

函数调用语法

函数名();

案例: 求1-100之间所有数的和

   function getSum() {  //函数声明
            var sum = 0;
            for (var i = 1; i <= 100; i++) {
                sum += i;
            }
            console.log(sum);
        }
        getSum();//函数调用
        
    

函数调用的特点

  • 函数体只有在调用的时候才会执行,调用需要()进行调用
  • 可以调用多次(重复使用)。

函数的参数

为什么要有参数

  • 函数内部是一个封闭的环境,可以通过参数的方式,把外部的值传递给函数内部

带参数的函数声明

 function 函数名(形参1, 形参2, 形参3,... ){
     //函数体
 }

带参数的函数调用

function 函数名(实参1, 实参2, 实参3,...);

形参(形式参数)

  • 在声明一个函数的时候,为了函数的功能更加灵活,有些值是固定不了的,对于这些固定不了的值。我们可以给函数设置参数。这个参数没有具体的值,仅仅起到一个占位置的作用,我们通常称之为形式参数,也叫形参。

实参(实际参数)

  • 如果函数在声明时,设置了形参,那么在函数调用的时候就需要传入对应的参数,我们把传入的参数叫做实际参数,也叫实参。

案例

function getSum(x, y){
    var sum;
    sum = x + y;
    console.log(sum);
}
var a = 1;
var b = 3;
getSum(a,b);

// x, y 就是形式参数。
// a, b 就是实际参数。
// 相当于 把 a的值赋值给了 x, b的值赋值给了 y, 所以 x = a = 1;  y = b = 3; 最后输出结果为4.

函数的返回值

函数的调用结果就是返回值,因此我们可以直接对函数调用结果进行操作。函数通过return返回一个返回值。

返回值语法

 function 函数名(形参1, 形参2, 形参3,...) {
     //函数体
     return 返回值;
 }

用变量接收返回值

 var 变量名 =  函数名(实参1, 实参2, 实参3,...);
 

案例

     1.  //-求一组数中的最大值
       function getMax(arr) {
           var max = arr[0];
           for (var i = 1; i < arr.length; i++) {
               if (max < arr[i]) {
                   max = arr[i];
               }
           }
           return max;
       }


      2.  // - 求阶乘    2! ===> n! ----> 1 * 2 * 3 * 4 *.....*n-1 *n
       function getFactorial(n) {
           var result = 1;
           for (var i = 1; i <= n; i++) {
               result *= i;
           }
           return result;
       }
       var factorial = getFactorial(5);
       console.log(factorial);
       
       
       3. // - 求1!+2!+3!+....+n!
       function getFactorial(n) {
           var result = 1;
           for (var i = 1; i <= n; i++) {
               result *= i;
           }
           return result;
       }

       function getSum(n) {
           // 求1-n之间每一个数阶层的累加
           var sum = 0;
           for (var i = 1; i <= n; i++) {
               //累加的是每一个数的阶乘
               sum += getFactorial(i);
           }
           return sum;
       }
       console.log(getSum(5));

返回值详解

  • 如果一个函数不需要返回值,可以不写return
  • 当函数中不写return的时候,返回的是undefined
  • 如果函数使用 return语句,那么跟再return后面的值,就成了函数的返回值
  • return 后面可以什么都不跟,如果return后面什么都不跟 会返回undefined
  • 函数执行的过程中只要遇到return 后面的代码就不会再执行
  • 推荐的做法是要么让函数始终都返回一个值,要么永远都不要返回值。

arguments的使用

所有函数都内置了arguements的对象
arguments对象中存储了传递的所有的实参
arguments是一个伪数组,因此及可以进行遍历
可以获取函数调用时传入的实参
适用于形参个数不确定时使用

案例

    function test(a, b, c) {
            console.log(arguments);
        }
        test(5, 6, 8);
        
        
        // 求任意个数的最大值
        function getMax() {
            var max = arguments[0];
            for (var i = 1; i < arguments.length; i++) {
                if (max < arguments[i]) {
                    max = arguments[i];
                }
            }
            return max;
        }
        var max = (5, 90, 88, 888, 55555);
        console.log(max);
        // 求任意个数的和
        function getSum() {
            var sum = 0;
            for (var i = 0; i < arguments.length; i++) {
                sum += arguments[i];
            }
            return sum;
        }
        var result = getSum(1, 2, 3);
        console.log(result);

其他函数

匿名函数

  • 没有名字的函数
  • 如何使用
    • 将匿名函数赋值给一个变量,这样就可以通过变量进行调用
    • 匿名函数自调用
// 普通函数的声明
function 函数名() {
    //函数体
}
//普通函数调用
函数名()



// 匿名函数的声明
    function () {
        //函数体
    }
    
// 匿名函数的调用
    var 变量名 = function();
    
    //用变量名()进行调用



//自调用函数
(function () {
        //函数体
    })()

自调用函数

  • 当函数书写完成之后立即调用
  • 调用完后就被销毁,优化性能
(function 变量名(){
    console.log('我是自调用函数');
})()

函数是一种数据类型

函数作为参数时

  • 因为函数也是一种类型,可以把函数作为两一个函数的参数,在另一个函数中调用
     function test(fn) {
     
     //当我们调用函数却没有给参数时, 形参的值为undefined
            console.log(fn);
            fn();
        }

        console.log(test());
    
    
    
    function test(fn) {
            console.log(fn); // 11
        }

        function getSum(x, y) {
            var sum = x + y;
            return sum;
        }
        test(getSum(5, 6));

函数作为返回值时

  • 因为函数是一种类型,所以可以把函数可以作为返回值从函数内部返回。
function test(a) {
    var b = 5;
    return function() {
        console.log(a + b);   // 7
    }
}
var fn = test(2);
fn();

猜你喜欢

转载自www.cnblogs.com/1020-jj/p/10858919.html