发布时间:2023-02-12 文章分类:编程知识 投稿人:王小丽 字号: 默认 | | 超大 打印

函数: 一个被设计为执行特定任务的代码块

语法

通过function 关键词定义,后面跟着其函数名称,然后是一对圆括号,圆括号中可以定义一些函数的参数。没有名称的函数呢?
函数名称可以包含字母、数字、下划线、中划线和美元符号(命名规则与变量命名一致)。

  // 声明一个函数
  function fnName(param1, param2, ... ,paramN) {
    // do something
    // return what did
  }

通过上面的方式,就创建了一个名称为fnName的函数,至于执行什么特定任务,就看函数体的内容了,比如需要一个把数字乘二的函数。

  function doubleNum(num) {
    const result = num * 2;
    return result;
  }

调用

调用函数是通过()运算符来实现的
使用函数名可以获得函数的定义,而使用函数名 + () 则可以获得函数的执行结果

    console.log(doubleNum); // log function doubleNum(num) { const result = num * 2; return result }
    console.log(doubleNum(2));  // log 4

除了我们手动通过()运算符调用函数,还可以靠浏览器来执行,那就是绑定DOM事件

函数的属性

属性名 属性值 属性规则
name 函数名称
形参 params 定义函数时,在函数名后()中书写的字符,也就是定义时的参数集合
实参 arguments 调用函数时,在()中书写的字符,也就是执行时的参数集合
length 0 或 若干 从形参里第一个参数为普通参数时开始计数,直到最后一个普通参数

length属性的规则有点绕,我们知道函数的参数有三种,第一种是常规参数 function fn(a, b) {},
第二种是默认参数 function fn(a = 1, b = 2) {},
第三种是剩余参数 function fn(a, b, ...rest) {}
而length的计算,正是从第一个参数为常规参数时开始,到最后一个常规参数,如果第一个参数不是常规参数,length就是0。

   function fn1(a, b, c) {}; // 第一个就是常规参数,开始计数,第二个和第三个也是,所以fn1的length为3
   function fn2(a = 1, b, c) {}; // 第一个是带默认值的参数,不计数,后面即使都是常规参数也不会计数了,所以fn2的length为0
   function fn3(a, b, ...rest) {}; // 第一个和第二个都是常规参数,计数, 第三个是剩余参数,不计数,所以fn3的length为2

之所以介绍一下length主要是之前看到一个面试题 123['toString'].length + 123 的值是多少,看了上面的介绍现在你会了吗?