首页 > 试题广场 >

下列程序的运行结果是什么? const name = "no

[单选题]
下列程序的运行结果是什么?
const name = "nowcoder";
url = "www.nowcoder.com";
console.log(delete name);
console.log(delete url);
  • false true
  • “nowcoder” “www.nowcoder.com”
  • true true
  • undefined undefined
JavaScript 中的 delete 操作符用于删除对象的属性。它的返回值是布尔值:删除成功返回 true,否则返回 false。 1. console.log(delete name); 输出 false name 是使用 const 声明的变量。 用 const(以及 let 和 var)声明的变量会被添加到当前作用域(这里是全局作用域)的变量环境中,但不会被添加为全局对象(在浏览器中是 window,在 Node.js 中是 global)的可配置属性。 更重要的是,const 声明的变量具有 `不可配置(non-configurable) 的属性。 delete 只能删除对象上可配置(configurable) 的属性。 因此,delete name 失败,返回 false。 2. console.log(delete url); 输出 true url = "www.nowcoder.com"; 这是一个隐式全局变量声明(没有使用 var、let 或 const)。 在非严格模式下,这种写***自动在全局对象(如 window 或 global)上创建一个属性。 通过这种方式创建的属性默认是可配置(configurable) 的。 因此,delete url 成功删除了全局对象上的 url 属性,返回 true。
发表于 2025-08-22 21:54:32 回复(0)
解释原因:
1. delete name返回 false
name是用 const声明的变量,具有块级作用域
const声明的变量是不可配置的(non-configurable)
delete操作符不能删除使用 const、let或 var声明的变量
在严格模式下,尝试删除这样的变量会抛出错误;在非严格模式下,它只是返回 false

2. delete url返回 true
url没有使用任何声明关键字(var、let、const),因此它被创建为全局对象的属性
在浏览器环境中,它相当于 window.url = "www.nowcoder.com"
全局对象的属性是可配置的(configurable),因此可以被 delete操作符删除
delete成功删除了 url属性,所以返回 true

注意事项:
在严格模式下,未声明的变量赋值会抛出 ReferenceError
应该避免创建隐式全局变量,始终使用声明关键字
delete操作符主要用于删除对象属性,而不是变量
编辑于 2025-10-10 16:38:23 回复(1)