JavaScript函数基础

函数(function)

函数(fun): 封封某一段脚本代码的代码块(有名称),可以被 调用

  • 无参无返回值
  • 带参带返回值
  • ES6支持可变数量的参数(rest参数)
  • 可以将函数直接赋给某一个变量,变量就带表函数本身
  • 箭头函数(类似Java语言中的拉姆达表达式)
  • 匿名函数

备注:所有脚本库或者脚本框架都设计成一个匿名函数;
函数调用结束后,函数内部定义的所有资源都会释放掉;
问题:匿名函数执行完后,内部的某一个对象需要保持存活状态?

请看代码中最后部分

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>4.html</title>
</head>
<body>
    <div>
        <script>
            // 无参无返回值的函数
            function fn1(){
                console.log("fn1");
            }
            // 调用函数
            fn1();

            // 带参数,有返回值,设置c的默认值为1的函数
            function fn2(a,b,c=1){
                c = a + b;
                return c;
            }
            let sum = fn2(1,2,0);
            console.log("fn2",sum);

             // Java中的可变参数:...变量名
             function fn3(...args){
                 let sum = 0;
                 for(let i = 0;i<args.length;i++){
                     sum += args[i];
                 }
                 return sum;
             }
             let sum1 = fn3(1,2,3,4);
             console.log("fn3",sum1);

             /* 可以将一个函数赋值给一个变量,相当于给函数起了个名字
             也可以说是一个匿名函数赋值给一个变量,变量名就是函数名
             匿名函数没有名字,需要括号括起来,无法显示调用
             匿名函数的自调用,在匿名函数后面加一个括号 ,将会立即调用匿名函数*/
             (function(){
                 console.log("匿名函数自调用");
             }) ();


             let fn4 = function(a,b){
                 return a + b;
             };
             console.log("fn4",typeof fn4,fn4(1,2));

             // 箭头函数(类似于Java中的拉姆达表达式)  简化关系:函数->匿名函数->箭头函数
             // 匿名函数:function(){}; 不写函数名
             let fn5 = (a,b)=>{return a + b;};//相当于fn4,这是简化写法
             // 当函数只有一行代码时,可写成let fn5 = (a,b)=>a + b;
             console.log("fn5",typeof fn5,fn5(1,2));

             // 函数调用结束后,函数内部定义的所有资源都会释放掉
             // 定义匿名函数,并自调用
             (function(){
                 // 定义全局变量
                 var i = 10;
             })();

             // 无法访问i了
            //  console.log(i);

            // 若需要继续保持可访问,需要提升参数的作用域(从方法(函数)提升到顶级)

            // 定义匿名函数,并自调用
            (function(){
                 // 定义全局变量,同时将作用域提升到顶级
                  window.i = 10;
                 // 定义函数fn6, 同时将作用域提升到顶级
                 window.fn6 = function(){
                     console.log("作用域提升后的函数fn6");
                 };
             })();

             // 可以访问i了
             console.log("作用域提升后的i",i);
             // 可以访问fn6
             fn6();

             // 所有脚本库或者脚本框架都设计成一个匿名函数,
             // 同时通过上述方法,保证函数内部的某个对象保持存活状态

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

结果:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值