首页 > 试题广场 >

执行以下程序,输出结果为()

[单选题]
执行以下程序,输出结果为()
let num = (function(x){delete x;return x;})(1);
console.log(num);


  • 抛出异常
  • null
  • undefined
  • 1
  • 任何使用 var 声明的属性不能从全局作用域或函数的作用域中删除。
    • 这样的话,delete操作不能删除任何在全局作用域中的函数(无论这个函数是来自于函数声明或函数表达式)
    • 除了在全局作用域中的函数不能被删除,在对象(object)中的函数是能够用delete操作删除的。
  • 任何用letconst声明的属性不能够从它被声明的作用域中删除。
  • 不可设置的(Non-configurable)属性不能被移除。这意味着像MathArrayObject内置对象的属性以及使用Object.defineProperty()方法设置为不可设置的属性不能被删除。
发表于 2022-02-14 15:50:17 回复(1)
delete 只能删除对象自身的属性.不能删除全局作用域、或者函数作用域中,定义的变量、和参数!
function func(param) {
  console.log(delete param); // false 不能删除函数作用域中的变量/参数。  严格模式下,会抛出异常!
}
console.log(delete func); // false 不能删除在全局中定义的变量或者函数!  严格模式下,会抛出异常!
// --------------- 
var a = 10;
delete a;//false
delete window.a;//false
console.log(a);//10
-----------------------2022年4月15日13:24:46修改-------------
delete只能删除对象中的可配置的属性,不能删除通过关键字定义的变量、函数,函数中的参数。但是需要注意的就是 隐式全局变量 和 eval中定义的变量 是可以删除的!

我们可以通过Object.getOwnPropertyDescriptor(obj,property)查看属性的配置信息。

var a = b =10;//此处的b就是隐式的全局变量,是可以通过delete删除的
delete b;//true
delete a;//false

Object.getOwnPropertyDescriptor(window,'b');//{value: 10, writable: true, enumerable: true, configurable: true}

eval('var aa=10');
Object.getOwnPropertyDescriptor(window,'aa');//value: 10, writable: true, enumerable: true, configurable: true}
delete aa;//true



编辑于 2022-04-15 13:34:34 回复(0)
这里相当于 var x = 1; 而delete只能删除对象的属性。 如果是window.x ,就可以使用delete删除
发表于 2017-03-14 16:44:09 回复(2)
由于变量x存在IIFE中,所以不会挂载到全局变量window上。所以delete无效
发表于 2022-01-19 22:48:05 回复(0)
D,直接用delete删除不了变量。参考http://www.jb51.net/article/54247.htm
发表于 2017-02-09 19:58:51 回复(0)
函数的形参具有dontdelete性 delete是不能删除掉的
发表于 2023-05-07 12:51:33 回复(0)

在JavaScript中,delete是一个操作符,用于删除对象的属性或数组中的元素。它的使用方式取决于你要删除的内容是对象的属性还是数组的元素。

删除对象的属性

let obj = {name: "Alice", age: 30};
delete obj.name; // 删除对象obj的name属性

删除数组中的元素

let arr = [1, 2, 3, 4, 5];
delete arr[2]; // 删除数组arr中索引为2的元素(注意:删除后该位置会变成undefined)

需要注意的是,delete只能删除自有属性,而不能删除继承属性。此外,它不能用于删除变量、函数或内建对象的属性。

编辑于 2023-12-29 16:33:04 回复(0)
delete无效不会异常吗
发表于 2022-08-10 07:33:47 回复(0)
D,不知道为什么删除无效。
发表于 2017-02-09 14:11:42 回复(0)