MST

星途 面试题库

面试题:JavaScript函数实参与形参匹配规则(高级难度)

假设有函数function complexFunc(a, b = 2, ...rest) { console.log(a + b + rest.reduce((acc, cur) => acc + cur, 0)); },分别调用complexFunc(1), complexFunc(1, 3, 4, 5),请说明输出结果及背后实参与形参匹配的原理。
48.0万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 调用complexFunc(1)
    • 输出结果:3
    • 实参与形参匹配原理
      • 形参a匹配实参1
      • 形参b由于有默认值2,所以b取值为2
      • rest形参没有额外实参传入,所以rest是一个空数组[]rest.reduce((acc, cur) => acc + cur, 0)在空数组上调用,根据reduce方法,初始值为0,最终结果就是0
      • 所以a + b + rest.reduce((acc, cur) => acc + cur, 0)1 + 2+ 0 = 3
  2. 调用complexFunc(1, 3, 4, 5)
    • 输出结果:13
    • 实参与形参匹配原理
      • 形参a匹配实参1
      • 形参b匹配实参3
      • rest形参收集剩余实参[4, 5]rest.reduce((acc, cur) => acc + cur, 0),从初始值0开始,依次累加数组元素,即0 + 4+ 5 = 9
      • 所以a + b + rest.reduce((acc, cur) => acc + cur, 0)1 + 3+ 9 = 13