JavaScript 函数

目录

arguments

扩展运算符

形参默认值

匿名函数

箭头函数

递归函数

变量作用域


基础

含义:函数是专门用于封装代码的,函数是一段可以随时被反复执行的代码块

格式:function 函数名称(形参列表){

                被封装的代码;

           }

           例:function getSum(a,b){

                        let sum = a + b;

                        return sum;

                  }

注意点:①函数没有通过return明确返回值,默认返回undefined

              ②调用函数时传入的实参的个数和形参的个数可以不相同

                  例:function getSum(a,b){

                               let sum = a + b;

                               return sum;

                         }

                         getSum(10,15,20); // 25

              ③JavaScript中的函数和数组一样,都是引用数据类型(对象类型),既然是一种数据类型,所以也可以保存到一个变量中

                 例:let say = function(){

                                console.log("Hello world!");

                        }

                        say(); // Hello world!

arguments

作用:保存所有传递给函数的实参

例:log 函数可以接受1个或多个参数

注意点:每个函数都有一个arguments,它其实是一个伪数组arguments[];

扩展运算符

格式:...

  1. 扩展运算符写在等号左边,将剩余数据打包到另一个新的数组中

    注意点:只能写在最后

    例:let [a,...b] = [1,2,3]; // a = 1 , b = [2,3]

  2. 扩展运算符写在等号右边,将数组中的数据解开

    例:let arr1 = [1,3,5];

           let arr2 = [2,4,6];

           let arr = [...arr1,...arr2]; // let arr = [1,3,5,2,4,6];

  3. 函数的形参列表中的扩展运算符

    作用:将传递给函数的实参打包到一个数组中(与arguments相似)

    例:function getSum(...values){

                 conlose.log(values);

           }

           getSum(10,20,30); // [10,20,30]

形参默认值

  • 在形参后边通过 = 指定默认值,未人为指定默认值则默认为undefined

    例:

         function getSum(a = "666",b = "999"){

              conlose.log(a,b);

         }

         getSum(); // 666 999

         getSum(123,456); // 123 456

         getSum(222,"a"); // 222 "a"

  • 默认值还可从其他函数中获取

    例:

         function getSum(a = "666",b = getDefault()){

              conlose.log(a,b);

         }

         function getDefault(){

              return "默认值x"

         }

         getSum(); // 666 默认值x

匿名函数

格式:function(){

                封装的代码;

           }

应用场景 :

  1. 作为其他函数的参数

    例:function test(fn){

                fn();

           }

           test(function()){

                console.log("Hello world!");

           }

  2. 作为其他函数的返回值

    例:function test(){

                return function(){

                      console.log("Hello world!");

                }

           }

           let fn = test();

           fn();

  3. 作为立即执行的函数

    (function (){

         console.log("Hello world!");

    })(); // 如果想要匿名函数立即执行,必须使用()将函数的定义包裹起来

注意点:匿名函数不能只定义不使用

箭头函数

作用:简化定义函数的代码

格式:let 函数名称 = (形参列表) => {

                封装的代码;

           }

注意点:

        ①如果只有一个形参,那么()可以省略,只写一个形参即可

        ② 如果{}中只有一句代码,那么{}也可一省略

             例:let say = name => console.log("Hello "+ name);

                    say(LYL); // Hello LYL

递归函数

function  login(){
	let pwd = prompt("请输入密码:");
	if(pwd != "123456"){
		login();		//  若密码错误,则反复执行login函数
	}
	alert("欢迎回来!");
}

变量作用域

  • 在JavaScript中{}外面的作用域称为“全局作用域”

  • 函数后边{}中的作用域为局部作用域“局部作用域”

  • 在ES6中只要没有和函数结合在一起,就是“块级作用域”

    例:if(true){

                // “块级作用域”

           }

           while(false){

                // “块级作用域”

           }

    • 块级作用域和局部作用域区别

      ①在块级作用域中通过var定义的变量是全局变量

      ②在局部作用域中通过var定义的变量是局部变量

      例:{

                  var num = 666; // 全局变量

                  let num = 777; // 局部变量

              }

  • 无论在块级作用域还是在局部作用域,省略变量前边的let或者var就会变成一个全局变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_L...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值