首页 > 其他分享 >05- 函数

05- 函数

时间:2023-01-07 22:23:47浏览次数:54  
标签:function console log 05 数组 return 函数

函数思维导图(复习)

函数和变量声明

函数是"一等公民", 程序运行的时候, 不管函数定义在什么位置, 都会先执行声明, 所以在任何地方都可以调用函数

 <script>
      sum();
      // 1:声明函数
      function sum() {
        var count = 0;
        for (var i = 0; i <= 100; i++) {
          count += i;
        }
        console.log("count", count);
      }
      //2: 调用函数
      sum();
    </script>
  </head>

  <body></body>
  <script>
    //变量一开始运行就声明, 等到代码运行到变量声明的那句代码才可以对其进行赋值
    console.log("str", str); //不会报错,输出undefined
    var str = "hello";
    console.log("str", str); //输出hello
 </script>

对象中的方法

  1. 这段代码中,首先定义了一个变量 obj,它的值是一个 js对象。这个对象有三个属性:name、age 和 say。其中,name 和 age 属性的值分别为字符串 "张三" 和数字 18,而 say 属性的值是一个函数。

  2. 在代码的最后,调用了 obj.say() 方法,这会导致对象的 say 属性中定义的函数被执行。执行函数时,会在控制台输出字符串 "他是张三"。

  3. 总的来说,这段代码展示了如何在 js 中定义一个对象,并调用它的方法。

    <script>
      var obj = {
        name: "张三",
        age: 18,
        say: function () {
          console.log("他是张三");
        },
      };
      obj.say();
    </script>

函数表达式

 <script>
      var say = function () {
        console.log("他是谁?");
      };
      say();
  </script>

带参数的函数

<script>
      //1:函数可以重复相同的代码
        function cook() {
           console.log("土豆");
        }
         cook();
         cook();

     // 2:可以利用函数的参数实现函数重复不同的代码
         function 函数名(形参1,形参2,形参3.............){

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

      //3:形参和实参的执行过程
      function cook(aru) {
        console.log(aru);
      }
      cook("陈一");
      cook("赵二");

      //4:函数的参数可以有,也可以不限制个数
    </script>

函数形参实参个数匹配

 <script>
      function getSum(num1, num2) {
        console.log(num1 + num2);
      }

      // 1:如果实参的个数和形参的个数一致,则正常输出结果
      getSum(1, 2);

      //2:如果实参的个数多余形参的个数,则会取到形参的个数
      getSum(1, 2, 3);

      //3:如果实参的个数小于形参的个数,多余的形参定义为undefined,最终结果就是NaN
      //4:形参可以看做是不用声明的变量,num2是一个变量但没有接收值,最终结果就是undefined
      //5:尽量让实参的个数和形参相匹配
      getSum(1); //NaN
    </script>

函数的返回值

 <script>
      // 1:函数是做某件事或者实现某种功能
        function cook(aru) {
           console.log(aru);
        }
         cook("hello");

      //   2:函数的返回值格式
       function 函数名() {
        return;
        }
      函数名();

      //1:函数是做某件事或者实现某种功能,最终的结果需要返回给函数的调用者函数名() 通过return实现
      //2:只要函数遇到return 就把后面的结果返回给函数的调用者,函数名() = return 后面的结果
      function getResult() {
        return "word";
      }
      getResult();
      console.log(getResult());

      function cook(aru) {
        return aru;
      }
      console.log(cook("土豆"));
      console.log(cook("苹果"));

      //   求任意两个数的和
      function getSum(num1, num2) {
        return num1 + num2;
      }
      console.log(getSum(1, 2));
      console.log(getSum(11, 22));
    </script>

函数返回值注意事项

 <script>
      // 1:return 终止函数(return后面的代码不在执行)
      function gerSum(num1, num2) {
        return num1 + num2;
        alert("我不会被执行的");
      }
      console.log(gerSum(1, 3));

      // 2:return 只能返回一个值,返回的结果是最后一个值,值为1
      function fn(num1, num2) {
        return num1, num2;
      }
      console.log(fn(2, 1));

      //3:我们求任意两个数的 加减乘除结果
      function getResult(num1, num2) {
        return [num1 + num2, num1 - num2, num1 * num2, num1 / num2];
      }
      console.log(getResult(1, 2)); //返回的是一个数组[3, -1, 2, 0.5]

      //4:函数如果有return,则返回的是return后面的值,如果函数没有return则返回undefind
      function fun1() {
        return 666;
      }
      console.log(fun1()); //返回 666

      function fun2() {
        return;
      }
      console.log(fun2()); //返回 undefined
    </script>

arguments使用

伪数组,并不是真正意义上的数组

  1. 具有数组的length属性

  2. 按照索引的方式进行存储的

  3. 它没有真正数组的一些方法,比如pop() push()...

 <script>
        // arguments的使用,只有函数才有arguments对象,而且是每个函数都内置好了这个arguments
      function fn() {
        // console.log(arguments); //arguments里面存储了所有传递过来的实参
        // console.log(arguments.length); //检测数组的长度
        // console.log(arguments[1]); //判断数组中第2个是什么
        // 可以按照数组的方式遍历arguments
        for (var i = 0; i < arguments.length; i++) {
          console.log(arguments[i]);
        }
      }

      fn(1, 2, 3);
      fn(1, 2, 3, 4, 5);
    </script>

利用函数翻转数组

1:这段代码包含了一个叫做 reverse 的函数,它可以翻转一个数组。

2:函数的定义使用了 JavaScript 中的函数声明语法,其中 reverse 是函数的名称,arr 是函数的参数。函数的主体使用了一个循环,在每次迭代中,它将数组 arr 的最后一个元素添加到新数组 newArr 的末尾。循环继续进行,直到遍历了整个数组 arr,此时新数组 newArr 就是翻转后的数组。最后,函数使用 return 语句将新数组返回。

3:在函数定义的下面,它还调用了两次函数,分别将数组 [1, 2, 3, 4, 7, 9] 和数组 ["pink", "red", "blue"] 作为参数传入。函数调用后,它使用 console.log() 函数将函数的返回值输出到控制台。输出的结果将是两个翻转后的数组。

 <script>
      //利用函数翻转任意数组 reverse 翻转
      function reverse(arr) {
        var newArr = [];
        for (var i = arr.length - 1; i >= 0; i--) {
          newArr[newArr.length] = arr[i];
        }
        return newArr;
      }
      var arr1 = reverse([1, 2, 3, 4, 7, 9]);
      console.log(arr1);
      var arr2 = reverse(["pink", "red", "blue"]);
      console.log(arr2);
    </script>

利用函数翻转数组

1: 这段代码定义了一个函数 reverse,该函数接受一个数组作为参数,并返回一个新的数组,该数组的内容为原数组的元素从后往前的顺序。

2: 具体来说,函数 reverse 首先定义了一个新数组 newArr,然后使用了一个 for 循环来遍历原数组。在循环体中,它使用了数组的 length 属性来追加数组元素。最后,函数返回新数组。

3: 在函数的末尾,有两个变量 arr1arr2,它们分别调用了函数 reverse 并将结果赋值给自己。最后使用 console.log 函数来输出变量的值。因此,当这段代码执行时,会在控制台输出两个数组:第一个数组是 [9, 7, 4, 3, 2, 1],第二个数组是 ["blue", "red", "pink"]

 <script>
      //利用函数翻转任意数组 reverse 翻转
      function reverse(arr) {
        var newArr = [];
        for (var i = arr.length - 1; i >= 0; i--) {
          newArr[newArr.length] = arr[i];
        }
        return newArr;
      }
      var arr1 = reverse([1, 2, 3, 4, 7, 9]);
      console.log(arr1);
      var arr2 = reverse(["pink", "red", "blue"]);
      console.log(arr2);
    </script>

利用函数冒泡排序

1: 这段代码定义了一个 JavaScript 函数 sort,该函数可以用于将数组的元素按升序排序。

2: sort 函数的实现使用了冒泡排序算法,该算法的基本思想是通过重复地遍历数组,依次比较相邻元素的大小,并交换位置,使得较大的元素慢慢“浮”到数组的最后面。

3: 在这段代码中,sort 函数首先定义了两个循环变量 ij,然后使用嵌套循环对数组进行遍历。内层循环每次从数组的第一个元素开始,依次比较相邻元素的大小并交换位置,直到比较到数组最后一个元素。外层循环则控制内层循环的次数,使得数组的所有元素都参与比较。

4: 最后,sort 函数返回已经排序好的数组,并将该数组赋值给变量 arr1,然后使用 console.log 函数将 arr1 的值输出到控制台。

   <script>
      function sort(arr) {
        for (var i = 0; i <= arr.length - 1; i++) {
          for (var j = 0; j <= arr.length - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
              var temp = arr[j];
              arr[j] = arr[j + 1];
              arr[j + 1] = temp;
            }
          }
        }
        return arr;
      }
      var arr1 = sort([11, 1, 2, 4, 5, 8, 6]);
      console.log(arr1);
    </script>

利用函数判断闰年

1: 该函数首先将变量初始化为false

2: 它使用以下条件检查年份是否为闰年:((year % 4 == 0 && year % 100 !== 0) || year % 400 == 0)此条件检查年份是否可以被 4 整除,但不能被 100 整除(除非它也可以被 400 整除)。

3: 如果这些条件中的任何一个为真,则标志设置为true。

 <script>
      function isRunYear(year) {
        var flag = false;
        if ((year % 4 == 0 && year % 100 !== 0) || year % 400 == 0) {
          flag = true;
        }
        return flag;
      }
      console.log(isRunYear(2000));
      console.log(isRunYear(1999));
   </script>

输出2月份的天数

1: 这段代码定义了一个 backDay 函数,当调用这个函数时,会弹出一个对话框,要求用户输入年份。然后,它会调用另一个函数 isRunYear,并将输入的年份作为参数传递给它。

2: isRunYear 函数接收一个年份作为参数,并判断这一年是不是闰年。闰年是指能被4整除但不能被100整除,或者能被400整除的年份。如果是闰年,它会返回 true;否则,它会返回 false

3: 当调用 backDay 函数时,如果 isRunYear 返回的是 true,就会弹出一个对话框,提示用户输入的年份是闰年,2月份有29天。否则,会弹出另一个对话框,提示用户输入的年份是平年,2月份有28天。

 <script>
      function backDay() {
        var year = prompt("请您输入年份:");
        if (isRunYear(year)) {
          alert("您输入的年份是闰年,2月份有29天");
        } else {
          alert("您输入的年份是平年,2月份有28天");
        }
      }
      backDay();

      function isRunYear(year) {
        var flag = false;
        if ((year % 4 == 0 && year % 100 !== 0) || year % 400 == 0) {
          flag = true;
        }
        return flag;
      }
    </script>

函数的两种声明方式

1. fun是变量名不是函数名
2. 函数表达式声明方式跟声明变量差不多,只不过变量里面存的是值而函数表达式重面存的是函数
3. 函数表达式也可以进行传递参数
 <script>
      // 1:利用函数关键字自定义函数(命名函数)
      function fn() {
        1;
      }
      fn;

      // 2: 函数表达式(匿名函数)
      var fun = function (aru) {
        console.log("我是函数表达式");
        console.log(aru);
      };
      fun("hello");
  </script>

标签:function,console,log,05,数组,return,函数
From: https://www.cnblogs.com/jokerwen/p/17033714.html

相关文章