📜  JavaScript 删除运算符

📅  最后修改于: 2022-05-13 01:56:53.023000             🧑  作者: Mango

JavaScript 删除运算符

下面是删除运算符的示例。

  • 例子:
     
    
  • 输出:
    true
    {"firstName":"Raj","lastName":"Kumar"}

本文将讨论 JavaScript 中可用的删除运算符。在 JavaScript 中,Delete 是一个相对鲜为人知的运算符。此运算符更具体地用于删除 JavaScript 对象属性。

JavaScript pop()、shift()splice()方法可用于从数组中删除元素。但是由于对象中的键值对,删除比较复杂。请注意,删除运算符仅适用于对象,而不适用于变量或函数。

句法:

delete object
// or
delete object.property
// or
delete object['property']

如果删除属性,则此运算符返回true 。删除不存在的对象属性将返回true ,但不会影响对象。虽然在尝试删除变量或函数时会返回false

示例:假设名为person的对象具有三个键值对(即firstName、lastNamephone )。现在,使用delete运算符删除 phone 属性将返回true


输出:

如上图所示,删除 person.phone返回true ,记录person对象显示phone属性不再存在。

让我们尝试应用delete运算符来删除变量和函数。


输出:

false
false

因为delete运算符不适用于 variables 或函数,它返回false并且实际的变量和函数保持不变。

要记住的另一件事是,此运算符不会删除属性值,而是删除属性本身。

例子:


由于对象是引用类型,因此 person.phone 和 phone 变量都将引用相同的内存地址。

输出:

true
12345

输出显示删除运算符已删除该属性,但该值仍存在于内存中。

例外:可以使用删除运算符删除全局变量。因为全局变量是窗口对象的属性,并且当delete作用于对象时,它会删除该变量。

例子:


不使用var、letconst关键字将变量设置为全局变量,它将作为对象属性工作。

输出:

true
Uncaught ReferenceError: toDelete is not defined

delete toDelete返回true并在删除变量后尝试访问该变量会引发引用错误,因为不再定义该变量。

使用 delete 删除数组值: JavaScript 数组毕竟是对象。因此,可以使用删除运算符。但这会导致问题,因为从数组中删除元素后,该运算符会将位置显示为空,并且不会更新数组长度。

例子:


输出:

因此,使用pop()、shift()splice()方法显然是删除数组元素的更好方法。

结论:开发人员还有其他方法,例如将对象属性的值设置为nullundefined 。但是该属性仍将存在于对象上,并且某些运算符(例如for in循环)仍会显示nullundefined属性的存在。

在循环中使用delete属性会显着降低程序的速度。因此,仅当绝对需要删除对象属性时才应使用此方法。