函数的分类、 封装、作用域、递归

函数

作用

1.简化代码
2.方便维护
3.提高开发效率
4.提高了代码的复用性,减少代码冗余

格式

 function 函数名(参数...){
                函数执行的代码
        }

eg:

        hs();//函数调用

        // 函数定义
        function hs() {
            document.write("八千里路云和月,三十功名尘与土");
        }

【注意】函数先定义后调用

分类

1.内置函数(官方提供的函数,系统自身拥有函数)

alert();
 document.write();
 console.log();
 parseInt();
 parseFloat();

2.自定义函数

根据参数和返回值的不同,可将函数分为四种。

参数:

  • 形参 :形式上参数
  • 实参 :实际参数

**返回值:**对函数执行完成的结果的返回。
**return:**结束当前函数,并将return后面的值(表达式/变量)作为函数的运行结果返回。

当我们需要对函数的运算结果进行不同的处理时,需要将函数的结果返回。

1.无参数无返回值

    <script>
        // 求1-100的和,将结果输出到页面。
        function sum() {
            var sum = 0;
            for (var i = 1; i <= 100; i++) {
                sum += i;
            }
            document.write(sum);
        }
        sum();
    </script>

2.有参数无返回值

    // 求1-n的和,将结果输出到页面。
    <script>
        function sum(n) {
            var sum = 0;
            for (var i = 1; i <= n; i++) {
                sum += i;
            }
            document.write(sum);
        }
        sum(100);
    </script>

3.无参数有返回值

    <script>
        // 求1-100的和 
        function sum() {
            var sum = 0;
            for (var i = 1; i <= 100; i++) {
                sum += i;
            }
            return sum;
        }

        // 1.调用,将结果弹出
        var a = sum();
        alert(a);
        // 2 调用,将结果输出到页面上
        document.write(a);
        // 3.调用 将结果输出到控制台。
        console.log(a);
    </script>

4.有参数有返回值

    <script>
        // 求1-n的和。
        function sum(n) {
            var sum = 0;
            for (var i = 1; i <= n; i++) {
                sum += i;
            }
            return sum;
            // document.write(sum);
        }

        // 1.调用,将结果弹出
        var a = sum(100);
        alert(a);
        // 2 调用,将结果输出到页面上
        document.write(a);
        // 3.调用 将结果输出到控制台。
        console.log(a);
    </script>

封装函数

1.确定函数的执行代码:函数体。
2.找出变量(不确定值。),将其设置为形参
3.如果需要对返回结果进行不同的处理,则定义返回值。
eg:

    <script>
        var arr = ["苏轼", "辛弃疾", "李白"];

        function joint(arr) {
            var str = "";
            for (var i = 0; i <= arr.length - 1; i++) {
                str += arr[i];
                if (i == arr.length - 1) continue;
                str += "|";
            }
            return str;
        }
        alert(joint(arr));
    </script>

arguments

arguments:是用来存储实参。
eg1:

    <script>
        function joint() {

            alert(arguments.length);
            for (var i = 0; i < arguments.length; i++) {
                alert(arguments[i]);
            }
            var str = arguments[0];
            for (var i = 1; i < arguments.length; i++) {
                str = str + "|" + arguments[i];
            }
            document.write(str);
        }
        joint("苏轼", "辛弃疾", "李白", "李商隐", "杜甫");
    </script>

eg2:

    <script>
        function sum() {
            var sum = 0;
            for (var i = 0; i < arguments.length; i++) {
                sum += arguments[i];
            }
            document.write(sum);
        }
        sum(12, 5, 8, 10, 15);
    </script>

作用域

作用域:变量存在的范围

1.全局变量

  • 直接写在Script标签中的变量,在页面中的任意位置都可以访问到。
  • 在页面打开创建,在页面关闭时销毁。

2.局部变量

  • 局部变量是定义在函数内部的变量.这个变量只能在函数内使用.例外,函数中的形参也是局部变量.
  • 每一次调用时创建,调用结束会销毁。
    eg:
    <script>
        // 声明提升
        console.log(b);
        var b = 21;

        function fun(b) {
            var a = 0;
            console.log(a);
            console.log(b);

        }
        fun(5);
        console.log(b);
    </script>

在这里插入图片描述

【注意】
如果局部变量与全局变量重名,则使用局部变量。若函数内部没有找到该变量,则去全局变量中查找。

递归

递归:函数之间可以互相调用,如果函数内部调用了其自身,则我们称其为递归调用。

特点:
1.函数自己调用自己
2.一般情况下还有参数
3.一般情况下有返回值.

方法:
1.找这一次计算与上一次计算的关系。
2.调用自身。
3.找到函数结束的条件。
eg1:

    <script>
        //  求n的阶乘
        function fac2() {
            var result = 1;
            for (var i = 1; i <= 10; i++) {
                result *= i;
            }
            return result;
        }
        alert(fac2(10));
    </script>

eg2:

    <script>
        //  求n的阶乘
        function fac(n) {
            if (n == 1) {
                return n;
            }
            return n * fac(n - 1);
        }
        alert(fac(10));
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值