MST

星途 面试题库

面试题:JavaScript严格模式下函数参数的陷阱及解决方案

在JavaScript严格模式下,函数参数存在哪些常见陷阱?请举例说明,并给出相应的解决方案。
33.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

函数参数陷阱及解决方案

  1. 参数重名陷阱
    • 问题举例: 在严格模式下,函数参数重名会抛出语法错误。例如:
'use strict';
function test(a, a) { // 这里参数a重复
    return a + a;
}

这段代码会导致 SyntaxError: Duplicate parameter name not allowed in this context 错误。 - 解决方案: 确保函数参数命名唯一,避免重名。如:

'use strict';
function test(a, b) { 
    return a + b;
}
  1. 参数作用域陷阱
    • 问题举例: 在严格模式下,函数参数在函数作用域内,不能与函数内部声明的变量重名。例如:
'use strict';
function test(a) {
    var a = 10; // 这里内部声明的变量a与参数a重名
    return a;
}

这段代码会导致 SyntaxError: Identifier 'a' has already been declared 错误。 - 解决方案: 避免在函数内部声明与参数同名的变量。可以改为:

'use strict';
function test(a) {
    var b = 10; 
    return a + b;
}
  1. 删除参数陷阱
    • 问题举例: 在严格模式下,不能使用 delete 操作符删除函数参数。例如:
'use strict';
function test(a) {
    delete a; // 尝试删除参数a
    return a;
}

这段代码会导致 SyntaxError: Delete of an unqualified identifier in strict mode. 错误。 - 解决方案: 不要尝试在严格模式下删除函数参数。如果需要清除参数值,可以将其赋值为 undefined 等合适的值。如:

'use strict';
function test(a) {
    a = undefined; 
    return a;
}