函数的声明和调用

声明和调用

函数可以把具有相同或相似逻辑的代码“包裹”起来,通过函数调用执行这些被“包裹”的代码逻辑,这么做的优势是有利于精简代码方便复用

声明(定义)

声明(定义)一个完整函数包括关键字、函数名、形式参数、函数体、返回值5个部分

 调用

声明(定义)的函数必须调用才会真正被执行,使用 () 调用函数。

  //    1.声明函数
        // function 函数名() {
        //     // 函数体:真正去执行的代码
        // }

        // 1.声明函数
        function Hello() {
            console.log('hello');
        }
        // 2.调用函数  函数名()
        Hello()
        Hello()

        // 注意:默认是不执行,必须要调用才能执行

函数的参数

   // 定义函数时参数叫形参,形式上的参数可以理解为我定义一个变量
        function getSum(x, y, z) {
            console.log(x, y, z);//5,8,undefined
            console.log(x + y);
        }
        // 2.调用这个函数
        // 实参:在调用函数时传递的参数,可以理解为在为上面形参赋值
        // getSum(1, 5) //6
        getSum(5, 8)//13
  // 注意点:实参和形参最好多应,不然多于的形参参数返回undefined

 多余形参默认是undefined

 // 1.数组求和的功能,这个数组不固定,封装一个函数,把数组当参数传递
        // 设置默认参数,防止用户没有传递参数,程序报错
        function getArrsum(Arr = []) {
            let sum = 0
            // 函数体:数组求和
            for (i = 0; i < Arr.length; i++) {
                sum += Arr[i]
            }
            console.log(sum);
        }
        // 2.调用函数的时候传递数组
        getArrsum([100, 40, 60, 80, 90, 60, 70])

函数的返回值

  // 函数的返回值:就是函数执行完毕,会返回一个结果,结果需要在外部输出,通过函数返回值返回出来

        function fn() {
            // return返回 值(结果)
            return 20
        }

        // 调用者
        console.log(fn());
        //fn() = 20

注意:
    function fn(x, y) {
            // 函数没有retrun关键字返回的结果是undefined
            x + y
        }

        console.log(fn(2, 2));

函数要是没有retrun关键字返回的结果是undefined

作业域

 <script>
        /* 作用域:代码的可应用范围,变量生效范围
 1.全局作用域(全局变量) 生效范围 (整个js文件)
 2.局部作用域(局部变量,函数作用域) 生效在函数内部
 2.块级作用域 (块级变量)只能在循环和判断语句生效
        */
        function f1() {
            let num = 123
            function f2() {
                console.log(num);
            }
            f2()
        }
        let num = 456
        f1()


    </script>

实例

 <script>
        function fn(x = 0, y = 0) {
            // 2.函数内部形参默认是局部变量
            console.log(x, y);
            a = 100
            b = 200
            let c = 500
            console.log(a, b, c);
        }
        fn(10, 20)
        console.log(x, y);//报错x,y,,没有定义
        console.log(a, b, c);//100 200  报错

函数表达式

 // 具名函数
        function fm() {
            return 300
        }
        console.log(fm());

        // 匿名函数
        // 函数表达式:通过变量名调用匿名函数方式称之为函数表达式

        let handle = function () {
            return 320
        }
        console.log(handle());
        // 注意: 使用函数表达式,调用要放在函数的下面,变量先定义在使用

立刻执行函数(项目用的很多,解决全局变量污染问题)

   // 立即执行函数(非匿名函数)
        // 作用:解决全局变量污染问题,解决全局变量名重复的问题
        let a = 309;
        //写法1 (())()
        (function (x, y) {
            console.log(x, y);
            let a = 10
            console.log(a);
        }
        )
            (10, 300);
        //写法2 (()())
        (function () {
            let a = 20
            console.log('这个自调用函数');
        }());
        // 注意点;自调用函数之间哟啊使用分隔符隔开,不然就报错

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值