MST

星途 面试题库

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

在JavaScript严格模式下,函数定义为function strictTest(a, b) { 'use strict'; console.log(a + b); },如果通过apply方法调用此函数,如strictTest.apply(null, [1]),会发生什么?为什么?从实参与形参匹配以及严格模式特性两方面阐述。
17.3万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 实参与形参匹配
    • 函数strictTest定义了两个形参ab,但通过apply方法调用时,只传入了一个实参[1]。在这种情况下,a会被赋值为1,而b由于没有对应的实参传入,在严格模式下其值为undefined
  2. 严格模式特性
    • 在严格模式下,对未声明的变量进行赋值会抛出错误。但这里ab都是函数的形参,并非未声明变量。
    • 当执行console.log(a + b)时,由于a1bundefined,在JavaScript中,1 + undefined的结果是NaN。所以最终控制台会输出NaN

总结:调用strictTest.apply(null, [1])会在控制台输出NaN,原因是实参数量少于形参,导致部分形参为undefined,在进行加法运算时得到NaN