前端孵化日记(十一)深入函数

192 阅读2分钟

创建函数

创建函数的两种方式:

    var a=function(){
        //函数表达式
    }
    function(){
        //函数声明
    }

参数类型

    function add(a,b){  //a,b为形参
        return a+b;
    }
    console.log(add(1,2));  //1,2为实参

参数传递

  • 如果是基本数据类型:把数据复制一份,传递给形参。

  • 如果是引用数据类型:把数据复制一份,传递给形参。传递是堆区的地址

函数的参数是另一个函数

<script>
    function add(a, b) {
        return a + b;
    }
    function sub(a, b) {
        return a - b;
    }
    function compute(f, x, y) {
        return f(x, y);
    }
    console.log(compute(add, 1, 2));    //3
    console.log(compute(sub, 1, 2));    //-1
</script>

arguments对象

arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。

<script>
    function f() {
        console.log(arguments);
    }
    f(1,2,3);
</script>


ES6中的函数

函数默认值

ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面
   function f(形参名1=默认值1,形参名2=默认值2) { }

rest参数

ES6 引入 rest 参数,它是在定义函数时使用,作用是接受剩余的参数。

  • rest是一个数组
  • rest只是一个变量名,可以用别的值代替
  • 必须是最后一个形参

当"..."出现在函数调用中的时候,此时"..."的作用为:将一个数组转为用逗号分隔的参数序列。

此时"..."是扩展运算符

箭头函数

定义一个箭头函数很简单,基本语法是:

  (参数) => {
   //函数体
}
  • 特点1:只有一个形参时,()可不写
  • 特点2:只有一个带return语句, {} 和 return 都可以不写
  • 特点3:只有一个不带return语句,{} 可以不写
  • 特点4:如果返回对象,把{} 和 return 省掉的话,需要给这个对象加()

在箭头函数中没有arguments和this,可以使用rest参数