Skip to content
本页目录
  • 箭头函数:

箭头函数虽然语法简洁、但也有很多场合不适用。箭头函数不能使用argumentssupernew.target,也不能用作构造函数。此外箭头函数也没有prototype属性。

1. 函数中的arguments

arguments对象是一个类数组对象,因此可以使用中括号语法访问其中的元素。而要确定传进来多少个参数们可以访问arguments.length属性。

javascript
 function say(name,message){
            console.log(arguments[0]);
            console.log(arguments[1]);
            console.log(arguments.length);
        }
        say('maria','这是一条信息')

在这里插入图片描述

arguments对象的值始终会与对应的命名参数同步。

  • 在函数内部修改arguments的值,调用函数的时候值已经改变了其实
javascript
        function doAdd(name ,age){
            arguments[1]=22
            console.log(arguments[0]);//lisa
            console.log(arguments[1]);//22
        }
        doAdd('lisa',66)

对于命名参数而言、如果调用函数时没有传这个参数,那么它的值就是undefined。这就类似于定义了变量而没有初始化。

2. 箭头函数中的参数

箭头函数中的参数不能使用arguments关键字访问,而只能通过定义的命名参数访问。但可以包装在函数中把它提供给箭头函数。

javascript
        let arrow=()=>{
            console.log(arguments[0]);
        }
        arrow()

在这里插入图片描述

3. 函数赋默认值

  1. es5之前,实现默认参数的一种常用方式就是检测某个参数是否等于undefined,如果是则意味着没有传这个参数直接给它赋值就行。
  2. 但是es6之后,支持显式定义默认参数了,只要在函数定义中的参数后面用=就可以为参数赋一个默认值了。
javascript
       function test(name){
            if(name==undefined){
                name='这是默认值'
            }
            console.log(name);
        }
        test()
  • 这一种更好用点
javascript
        function test1(name='第二种直接在这设置默认值'){
            console.log(name);
        }
        test1()

在这里插入图片描述

4. 函数表达式

定义函数的两种方式:函数声明和函数表达式:

  1. 函数声明的关键特点是函数声明提升,函数声明会在代码执行之前获得定义。
  2. 函数表达式即创建一个函数再把它赋值给一个变量。

这样创建的函数叫做匿名函数,其中匿名函数中的this指向的是window,要去另一篇文章this指向

  • 函数声明:
javascript
        // 函数声明
        sayHi() //函数声明的特点就是函数声明提升了
        function sayHi(){
            console.log('say hi brother');
        }
  • 函数表达式:
javascript
        // 函数表达式
        sayNo()

        let sayNo=function(){
            console.log('say no');
        }
  • 函数表达式没有声明提升,这样会报错的。
    在这里插入图片描述