《JavaScript第四章》

1、函数的相关概念

JavaScript的函数理解为Java里面的方法,把一些经常复用的代码,抽取出来封装在一个函数中。
提高程序的可读性,减少开发者的工作量,便于后期的维护。
            
Java中的方法的语法:
public  返回类型 方法名(数据类型 变量名 , 数据类型  变量 ...){
                    
}

             
js中函数的分类:
A.内置函数(JS提供的): console.log(); alert()  confirm  parseInt...  :
B.自定义函数(程序员自己写的)
                
其中自定义函数的声明语法如下:
function  方法名(变量名,变量名...){
                    
             
调用:  方法名(参数列表);
                
函数定义与调用的编写顺序不分前后。
你可以先调用函数,再声明函数

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body> 
        <script>

           //声明一个无参函数
           function a1(){
               console.log(123);
           }
           
           a1();
           
           //声明一个指定个数的有参函数
           function a2(a,b,c){
               console.log(a+b+c);
           }
           a2(1,2,3);
           
           //声明一个若干个数的有参函数
           function a3(... a){
               for(var i = 0 ; i<a.length ; i++){
                   console.log(a[i]);
               }
           }
           
           a3(1,1.1,true,undefined,null,"你好");
           
           //有返回值的函数
           function a4(a,b){
               return a + b;
           }
           var sum = a4(10,20);
           alert(sum)
           
        </script>
    </body>
</html>

 

2、变量的作用域 

和Java一样 JS的变量也分为局部变量和全局变量(Java的叫法是成员变量,只是概念和全局类似)。

全局变量:在所有函数之外声明(script标签内部的最开始几行),它的作用域称为全局作用域,在同一个页面文件中的所有脚本内都可以使用。
                
局部变量:在函数体内利用var关键字声明的变量称为局部变量,仅在该函数体内有效。

<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <script>

             function info() {
             var age = 18;
           }
           info();
           
           console.log(age);  
           //思考以上代码的执行结果是什么
           //A.18   B.报错   C.null   D.undefined
            //答案:B   提示:age is not  defined  表示未定义
            //原因如下:age是在函数里面定义的理解为局部变量.但是console.log是在函数外调用的.

     </script>
   </body>
</html>

 

3、函数进阶 

以下知识点掌握即可:用的很少,但是看到了需要知道意思.
函数的声明 一般就是上面两个知识点即可.就是利用function声明
            
不仅有函数 还有一个叫做函数表达式的东西
函数表达式指的是将函数赋值给变量的表达式,
通过“变量名()”的方式即可完成函数的调用,小括号“()”内可以传入参数,示例代码如下。

<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <script>

            //函数的写法:
            function a1(a){
                console.log("我被调用了。参数是" + a)
            }
            a1(123);
            
            //函数表达式的写法:
            var abc = function (a){
                console.log("我被调用了。参数是" + a)
            };
            
            abc(567);

 
        </script>        
    </body>
</html>

 

4、匿名函数 

匿名函数自调用:HTML页面解析之后 自动执行的一段代码.只会执行一次.
例如跳转网页之后提示:登录成功  加载成功
语法如下:
(function(){
     alert("登录成功!!!");
})();

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <script>

            //下面是函数叫做a的函数
            function a(){
                alert(123);
            }
                   
            //匿名函数指的就是:没有函数名的函数  但是又拥有了变量名
            var a = function(){
                alert(456);
            }
                          
        </script>
    </body>
</html>

 

5、箭头函数 

箭头函数了解即可:和函数表达式一样,代码简化。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <script>

            以下3个函数的实际意义完全一样.

            

            function sum(a,b){
                return a + b;
            }
            
            var fn = (a, b) => a + b;
            
            var fn = (a,b) => {
                return  a + b;
            };

            
        </script>     
    </body>
</html>

 

6、递归函数 

解即可. 函数的内部调用自己函数本身.
优点:代码简化. 缺点:难得想

练习1:

例如声明一个函数 求1-N的和

function sum(n){
                var sum = 0;
                for(var i = 1 ;i<=n;i++){
                    sum = sum + i;
                }
                return sum;
            }
            var i = sum(100);
            alert(i);

 

练习2: 

递归的核心1:鸿沟(临界值)

function sumDg(n){
                if(n==1){
                    return 1
                }else{
                    return n + sumDg(n-1);
                }
            }
            alert(sumDg(100));

 

练习3: 

案例:求菲不拉切序列  1   1   2   3   5   8   13   21 
求第N项值

function dg(n){
                if(n==1 || n == 2){
                    return 1;
                }else{
                    return dg(n-1) + dg(n-2);
                }
            }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值