面试题答案
一键面试函数参数陷阱及解决方案
- 参数重名陷阱
- 问题举例: 在严格模式下,函数参数重名会抛出语法错误。例如:
'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;
}
- 参数作用域陷阱
- 问题举例: 在严格模式下,函数参数在函数作用域内,不能与函数内部声明的变量重名。例如:
'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;
}
- 删除参数陷阱
- 问题举例:
在严格模式下,不能使用
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;
}