JavaScript—函数

函数的概念

在js里面,可能会定义非常多的相同代码或功能相似的代码,这些代码需要大量重复地使用。

函数就是封装了一段可被重复调用的代码块。通过代码块实现大量代码的重复使用。

函数示例
//常规方法
var sum = 0;
        for (var i = 1; i <= 100; i++) {
            sum += i;
        }
        console.log(sum);       //输出1~100的和
        var sum1 = 0
        for (var i = 1; i <= 10; i++) {
            sum1 += i;
        }
        console.log(sum1);       //输出1~10的和
        var sum2 = 0;
        for (var i = 1; i <= 5; i++) {
            sum2 += i;
        }
        console.log(sum2);       //输出1~5的和
//函数法
function getSum(begin, end) {
            var fSum = 0;
            for (var i = begin; i <= end; i++) {
                fSum += i;
            }
            console.log(fSum);
        }
        getSum(1, 100);        //输出1~100的和
        getSum(1, 10);        //输出1~10的和
        getSum(1, 5);        //输出1~5的和

函数的使用

函数的使用步骤是声明函数调用函数

  1. function声明函数的关键字
  2. 函数是做某件事,函数名一般用动词
  3. 函数不调用自己不执行
  4. 调用时需要带上小括号

函数的封装就是把一个或多个功能通过函数的方式封装起来,对外只留有一个简单的函数接口。(类似打包)

参数 说明
实参 形式上的参数函数定义时,传递的参数
形参  
带参数的函数
function getSum(begin, end) {        // begin与end为形参
            var fSum = 0;
            for (var i = begin; i <= end; i++) {
                fSum += i;
            }
            console.log(fSum);
        }
        getSum(1, 100);        //把1(实参)赋值给begin(形参),把100(实参)赋给end(形参)。输出1~100的和 
        getSum(1, 10);        //输出1~10的和
        getSum(1, 5);        //输出1~5的和

函数的参数

  1. 函数可以带参数也可不带。
  2. 声明函数时,函数名括号内为形参,默认值为undefined。
  3. 调用函数时,函数括号内是实参。
  4. 形参与实参个数不匹配结果不确定,尽量匹配。
函数形参与实参个数对应情况
function getSum(num1, num2) {
            console.log(num1 + num2);
        }
        getSum(1, 0);        // 形参与实参个数相同正常输出
        getSum(1, 0, 2);        //如果实参个数多于形参,只取到形参个数(多出部分忽略)
        getSum(1);      // 实参个数小于形参,num2是一个变量但是没有接受值所以结果为undefined(未定义)所以输出NaN

函数的返回值

有时需要获取函数的返回值,可以通过return实现。

函数的返回值
function getResult() {
            return 10;
        }
        console.log(getResult());
返回两个数中小的值
 function getMin(num1, num2) {
            return num1 < num2 ? num1 : num2;
        }
        console.log(getMin(1, 0));
函数返回数组中的最大值
 function getArr_Max(arr) {
            var max = arr[0];
            for (var i = 1; i <= arr.length; i++) {
                if (arr[i] > max) {
                    max = arr[i];
                }
            }
            return max;
        }
        var _Max = getArr_Max([1, 7, 4, 5, 1, 6, 7, 3]);
        console.log(_Max);
return终止函数
 function getResult() {
            return 10;
            console.log('不被执行的内容');      // return返回后函数终止后面的语句不再执行
        }
        console.log(getResult());
return值的个数
function getResult() {
            return 10, 0, 1;        // 返回最后一个值
        }
        console.log(getResult());

function getResult() {
            return [0, 1, 2, 3, 4, 5, 6]        // 返回一个数组(数组内可以有多个值)
        }
        console.log(getResult());
函数无返回值
 function getResult() {

        }
        console.log(getResult());        // undefined

arguments的使用

 当我们不确定有多少个参数传递的时候,以用arguments来获取。在JavaScript中,arguments实际上它是当前函数的一个内置对象。所有函数都内置了一个arguments对象,argumennts对象中存储了传递的所有实参。只有函数才有argumennts对象,每个函数都内置有argumennts。

argumennts展示形式是一种伪数组,因此可遍历。伪数组具有以下特点:

  1. 具有length属性
  2. 按索引方式储存数据
  3. 不具有数组的push(),pop()等方法
arguments的使用
function getResult() {
            console.log(arguments);        //里面存储了所有传来的实参
        }
        getResult(1, 2, 3, 4, 5, 6, 7);
arguments取任意个数中的最大值
 unction getResult() {
            var Max = arguments[0];
            for (var i = 0; i <= arguments.length; i++) {
                if (arguments[i] > Max) {
                    Max = arguments[i];

                }
            }
            return Max;
        }
        console.log(getResult(1, 2, 3, 4, 5, 6, 7));

函数案例

利用函数翻转数组
 function reverse(arr) {
            var arr0 = [];
            for (var i = arr.length - 1; i >= 0; i--) {
                arr0[arr0.length] = arr[i];
            }
            return arr0;
        }
        var arr = reverse([1, 7, 4, 5, 1, 6, 7, 3]);
        console.log(arr);
冒泡排序
 function bubbleSort(arr) {
            for (var i = 0; i < arr.length - 1; i++) {
                for (var j = 0; j < arr.length - 1; j++) {
                    if (arr[j] > arr[j + 1]) {
                        var temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }
            return arr;
        }
        var arr = bubbleSort([1, 7, 4, 5, 1, 6, 7, 3]);
        console.log(arr);
判断闰年
 function isLeapYear(year) {
            var flag = false;
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                flag = true;

            }
            return flag;
        }
        console.log(isLeapYear(2020));
函数互相调用
 function f1() {
            console.log(0);
            f2();
        }
        function f2() {
            console.log(1);
        }
        f1();
判断年份2月天数
  function backDay() {
            var year = prompt("请输入需要判断的年份:");
            if (isLeapYear(year)) {
                alert("该年份2月有29天");

            } else {
                alert("该年份2月有28天");
            }
        }
        function isLeapYear(year) {
            var flag = false;
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                flag = true;

            }
            return flag;
        }
        backDay();

 

函数的两种声明方式

函数关键字自定义函数
function fn() {
            console.log('利用关键字自定义函数(命名函数)');
        }
        fn();
函数表达式
 var fun = function () {
            console.log('函数表达式(匿名函数)');
        }
        fun();

 

 

posted @ 2023-09-01 19:22  Dr丶云幕  阅读(8)  评论(0编辑  收藏  举报