函数(方法、参数、参数的数量、arguments对象的使用、函数表达式、递归调用(重点、难点))

标红为重点

一、函数(方法)

1.什么是函数?

   函数是一个可以重复使用的程序模块,该程序模块可以完成一个特定的功能

2.函数的定义:

             function 函数名(【参数】){

                函数体语句;

             }

             (1)function:是关键字,必须小写

             (2)函数名:用户标识符(用户自定义)---建议:见名知意

             (3)【参数】:'()'不能省略,'参数'是可选的(函数可以有参数,也可以没有参数)

             (4)'{}':不能省略,表示函数的控制范围

             (5)'函数体语句':实现功能的代码

                        function getSum(){

                                   let sum = 0;

                                   for (let i = 1; i <= 100; i++) {

                                               sum += i;

                                   }

                                   return sum;

                       }

3.函数的调用:

          (1)带返回值的函数(函数体中有return语句的函数):

                       let / var  变量 = 函数名(【参数】)

                注意:关于函数的返回值

                            a.函数是否要返回值由具体的需求决定

                            b.函数返回值通过return语句来完成。在函数中一旦执行了return语句,当前函数就结束运行

                例如:计算1+2+3+...+100之和。

                   function getSum() {

                            let sum = 0;

                            for (let i = 1; i <= 100; i++) {

                                        sum += i;

                            }

                            return sum;

                        }

                //  调用函数

                let t = getSum();//getSum函数中return语句将sum的值返回后赋给变量t

                console.log('1+2+3+...+100=', t);//1+2+3+...+100=5050

          (2)无返回值的函数调用:

                       函数名(【参数】)

二、函数的参数:函数在运行是需要外部的数据才是实现具体的功能。这个外部的数据就是参数

1.形参:形式参数,是在函数定义时出现在函数首部的参数。形参没有实际值,只是一个占位符

2.实参:实在参数。是函数调用时出现在函数首部的参数,实参表示的是一个实际值

3. 在函数调用时,参数的传递方向是实参-->形参(传递方向是单向的,当形参发生改变后不会影响实参)

 运行结果:

                                  

三、函数参数的数量:在JavaScript中允许函数的形参与实参不同

1.实参的数量多于形参的数量:函数可以正常运行,多余的实参被忽略

运行结果:33

2.实参的数量少于形参的数量:多出的形参是一个已声明未赋值的变量,它的值是undefined

运行结果:

                      

四、arguments对象的使用

1.是内置对象:已经定好的,用户只要使用即可

2.作用:调用函数时,函数的实参都保存在arguments对象中

运行结果:

运行结果:78

强调:每个函数内部都有一个arguments对象,本质是一个数组,数组保存的是调用函数传递实参

练习7:定义一个函数,判断一个数是否是'完数'(完数:某个数的所有因子(不包括自身)之和等于它本身)

 输出1000以内所有的'完数';

 运行结果:

                            

五.函数表达式:将定义的函数赋给一个变量,通过变量完成函数的调用和参数传递(即函数是匿名的)

1.定义:

            var/let/const    变量名 = function (【参数】) {

                        函数体语句

            }

2.调用

            变量名 (【参数】)

 六.函数的递归调用(重点、难点)

1.递归调用:函数自己调用自己(即在函数的函数体语句中调用自己)

2.递归算法:

(1)用递归方式解决问题的前提

      a.问题可以进行分解,分解得到的新问题的解法与原问题的解法相同

              例如: 8!-->8*  7!-->7*   6!-->...-->3*  2!-->2*   1!

      b.问题的分解过程必须有明确的结束条件

(2)递归的过程

      a.自上而下分解问题:得到最简单问题的解

      b.自下而上回溯得到问题的解

3.代码的实现

 

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值