JavaScript—函数


JavaScript—函数

一、函数的概念

在JS中,可能会定义非常多的相同代码或者功能相似的代码,这些代码可能需要大量重复使用。虽然for循环语句也能实现一些简单的操作,但是比较具有局限性,此时我们就可以使用JS中的函数。

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

二、函数的使用

1.声明函数

语法:

function 函数名(){
    // 函数体
};

注意:

  1. function 声明函数的关键字,全部小写;

  2. 函数名一般为动词;

  3. 函数不调用不会执行

2.调用函数

函数名( )

三、函数的参数

  1. 形参和实参

    function 函数名(形参1,形参2,...){
        // 函数体
    };
    
    函数名(实参1,实参2,...);
    
    1. 在声明函数的小括号里面是形参(形式上的参数)
    2. 在函数调用的小括号里是实参(实际的参数)
  2. 形参和实参的执行过程

JS代码在执行时,遇到调用函数时,会将实参传递给形参,也就是说,形参相当于一个变量,用于接收实参。

  1. 函数形参和实参的匹配问题
    1. 如果函数实参和形参的个数一致,则正常输出结果;
    2. 如果函数实参的个数多于形参的个数,多余的实参会被舍弃;
    3. 如果函数实参的个数少于形参的个数,多余的形参会被定义为undefined。

四、函数的返回值 return

  1. 语法

    function 函数名(){
        ...
        ...
        return 需要返回的结果;
    };
    
    1. 函数只是实现某种功能,最终的结果需要返回给函数的调用者函数名;
    2. 只要函数遇到return,就会把后面的结果返回给函数的调用者;
    3. 函数的调用者为函数名()
  2. 注意事项

    1. return会终止函数;
    2. return只能返回一个值或者一个数组,返回的结果是最后一个值;(针对数字型)
    3. 如果函数没有return,返回值为undefined;
    4. return不仅针对函数,若是函数中有循环并且循环中包含return,return会终止循环并且推出函数。

五、arguments的使用

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

  1. arguments以伪数组的形式存储所有实参;
    1. 伪数组具有数组的length属性;
    2. 按照索引的方式进行存储;
    3. 没有真正数组的一些方法,如:pop( ),push ( ) 等等。
  2. 可以按照数组的方式遍历arguments;
  3. 只有函数才有arguments对象并且每个函数已经内置了arguments对象。

六、函数的两种声明方式

  1. 利用函数关键字自定义函数(命名函数)
function 函数名(){
    // 函数体
};
  1. 函数表达式(匿名函数)
var 变量名 = function(){
    // 函数体
};

匿名函数使用变量名调用函数。


案例

1.利用函数计算1-100之间的累加和

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

2.利用函数求任意两数的和

function getSum(num1,num2){
    return num1 + num2;
};
console.log(getSum(3,7));
// 调用函数的实参可为任意数字

3.利用函数比较两个数的大小

function getMax(num1,num2){
    if (num1 > num2){
        return num1;
    };else if (num1 < num2){
        return num2;
    };else if (num1 = num2){
        return '两个数相等';
    };
    // 也可以用三元表达式:
    // return num1 > num2 ? num1 : num2;
};
console.log(getMax(2,3));

4.利用函数求任意一个数组中的最大值

function getArrMax(arr){
    var max = arr[0];
    for (var i = 1; i <= arr.length; i++){
        if (arr[i] > max){
            max = arr[i];
        };
    };
    return max;
};
getArrMax(任意数组);

5.利用函数求任意个数的数字的最大值

function getMax(){
    var amx = arguments[0];
    for (var i = 1; i < arguments.length; i++){
        if (arguments[i] > max){
            max = arguments[i];
        };
    };
    return max;
};
getMax(任意个实参);

6.利用函数翻转任意数组

function reverse(arr){
    var newArr = [];
    for (var i = arr.length - 1; i>=0; i--){
        newArr[newArr.length] = arr[i];
    };
    return newArr;
};
reverse(任意数组);

7.用户输入年份,输出当年2月份天数

function backDay(){
    var year = prompt('请输入年份:');
    if (isRunYear(year)){
        alert(year + '年有29天。');
    }; else {
        alert(year + '年有28天。');
    };
};
function isRunYear(year){
    var flag = false;
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
        flag = true;
    };
    return flag;
};
backDay();

文章作者: Cikian
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Cikian !
评论
  目录