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