手记

【九月打卡】第19天 前端工程师2022版 函数

课程名称:前端工程师2022版
课程章节:函数
课程讲师: 慕课网
课程目标:掌握函数的基本用法,尤其是递归和闭包
课程内容:
1.函数的定义于作用
2.函数拓展-算法面试题
3. 递归与克隆
4. 作用域和闭包


1. 函数的定义于作用

JavaScript 使用关键字 function 定义函数。
函数可以通过声明定义,也可以是一个表达式。
带参数的函数

function calcPerimeter(a, b, c) {
  // a, b, c 分别代表三条边
  var sum = a + b + c;

  return sum;
}

// 调用函数 并将返回值赋值给perimeter
var perimeter = calcPerimeter(3, 4, 5);

不带参函数(匿名函数)
函数表达式:就是把函数存到变量里。

匿名函数:没有名字的函数;

匿名函数在使用时只有两种情况:

匿名函数自执行:声明后不需要调用就直接执行

//2,函数表达式:把函数存到变量或数组等里,调用时通过变量进行调用
var fn = function(){
    console.log("函数表达式:将函数存到变量里");
};
fn();//调用时需要写括号
 
//2,函数表达式:把函数存到数组第0位,调用时通过数组第0位进行调用
var arr = [];
arr[0] = function(){
     console.log("函数表达式:将函数存到数组的对应位置");
};
arr[0]();//调用时需要写括号要写括号

函数的作用域
函数有他自己的作用域,函数内声明的变量等通常情况下不能被外部访问,但是函数可以访问到外部的变量或者其他函数等

var a = 1;

function fn() {
    var b = 2;

    console.log(a); // 输出:1
    console.log(b); // 输出:2
}

fn();

console.log(b); // ReferenceError: b is not defined

递归

递归函数介绍
递归是函数的高级用法,本质上是函数自已调用自已
递归函数特性
重复执行
调用自身
【必须】要有条件控制,避免死循环

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 利用递归函数求1-100的和
        let i = 0
        let sum = 0
        function getSum() {
            if (i >= 100) { return sum } // 后边只有一句话,可以省略大括号
            i++
            sum += i
            getSum()
        }
        getSum()
        console.log(sum);

    </script>
</body>

</html>

JS闭包

闭包是javascript中的一个重要知识点,面试经常问到,需要我们熟练掌握。根据javascript高级程序设计中解释:闭包是指有权访问一个函数作用域中局部变量的函数。

要认知闭包,就要知道js中有两种作用域:全局作用域,局部作用域,与之对应的是全局变量和局部变量。我们都知道在函数内部中可以访问到全局作用域中的全局变量,但是在全局作用域中一般却无法访问某个函数的局部变量。为了解决这个问题,我们必须知道闭包。

 <script>
    // 闭包
    function fn() {
      var arr = [];
      for(var i=0;i<5;i++) {
        arr[i] = function() {
          return i;
        }
      }
      return arr
    }
    var list = fn()
    for(var i =0;i<list.length;i++) {
      console.log(list[i]());
    }
  </script>

课程截图

0人推荐
随时随地看视频
慕课网APP