JavaScript使用delete操作符修改传入对象属性的相关问题
问题排查
你的代码存在两个不符合需求的问题:
- 操作的目标对象错误:函数内写的是
delete user.name,直接操作了全局作用域下的user变量,没有使用传入的person参数。本次测试刚好你传入的就是user对象,所以凑巧删除了属性,但如果传入其他person对象,代码完全不会生效,不符合函数的通用性设计要求。 - 存在多余的返回逻辑:需求明确要求函数无返回值,你代码中
return new Object(person)的逻辑完全多余,需要删除。
正确实现
let user = {}; user.name = "name"; export default function removeName (person){ // 直接删除传入参数对象的name属性 delete person.name; // 不需要写return,函数默认返回undefined,满足无返回值要求 } removeName(user); console.log(user); // 输出 {}
实现说明
- JavaScript中对象是按引用传递的,函数内对参数
person的修改会直接作用到原对象上,符合“直接修改传入对象”的要求 - 没有额外返回值,完全符合需求定义
内容的提问来源于stack exchange,提问作者mixalis petros
相关产品推荐
相关产品推荐

