JavaScript中delete操作符返回true及函数返回undefined疑问
delete操作符返回true的原因说明
delete 是JavaScript标准定义的一元操作符,本身就具备布尔类型的返回值,用来标识本次属性删除操作是否执行成功,不是仅执行删除操作不返回结果。
你代码中返回true的原因很明确:
- 你通过对象字面量声明的
user对象的name是普通自有属性,这类属性默认的configurable(可配置)描述符为true - 当delete操作的目标是对象可配置的自有属性时,删除操作会正常执行,同时返回
true,因此console.log(delete user.name)输出了true。
补充:delete返回false的常见场景
- 要删除的属性是对象的不可配置属性(
configurable描述符为false) - 删除用
var/let/const声明的变量、函数声明 - 删除数组
length等JS内置的不可配置属性
关于你提到的第二个输出undefined,原因你已经理解:removeName函数没有显式写return语句,JS中无return的函数执行后默认返回undefined,因此变量x赋值为undefined,打印结果就是undefined。
内容的提问来源于stack exchange,提问作者mixalis petros
相关产品推荐
相关产品推荐

