JavaScript删除运算符delete用法介绍

2021年3月12日14:20:43 发表评论 842 次浏览

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

  • 例子:
    filter_none

    编辑

    play_arrow

    链接
    亮度_4
    代码

    <script> 
         let emp = { 
             firstName: "Raj" ,  
             lastName: "Kumar" ,  
             salary: 40000 
         } 
      
         console.log( delete emp.salary);
         console.log(emp);
    </script> 

    chevron_right

     
        

    filter_none

     
        

  • 输出如下:
    true
    {"firstName":"Raj", "lastName":"Kumar"}

本文将讨论JavaScript中可用的delete运算符。相对而言, Delete是JavaScript中鲜为人知的运算符。此运算符更专门用于删除JavaScript对象属性。

JavaScriptpop(), shift()or拼接()方法可用于从数组中删除元素。但是由于对象中的键值对, 删除操作更加复杂。请注意, 删除运算符仅适用于对象, 不适用于变量或函数。

语法如下:

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

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

例子:假设一个对象叫做人具有三个键值对(即名, 姓和电话)。现在, 使用删除操作员删除手机属性将返回true.

<script>
     let person = {
         firstName: "John" , lastName: "Doe" , phone: 12345
     }
  
     console.log( delete person.phone);
     console.log(person);
</script>

输出如下:

JavaScript删除运算符1

如上图所示, 删除个人电话退货true并记录人对象显示电话该属性不再存在。

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

<script>
     let num = 5;
     let sum = (a, b) => {
         return a + b;
     }
  
     console.log( delete num); //false
     console.log( delete sum); //false
</script>

输出如下:

false
false

因为删除运算符不适用于变量或函数, 它返回false实际的变量和功能保持不变。

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

例子:

<script>
     let person = {
         firstName: "John" , lastName: "Doe" , phone: 12345
     }
  
     let phone = person.phone;
  
     console.log( delete person.phone); //true
     console.log(phone); //12345
</script>

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

输出如下:

true
12345

输出显示删除操作员已删除该属性, 但该值仍存在于内存中。

例外:全局变量可以使用删除操作员。因为全局变量是窗口对象和作为删除对对象起作用, 它将删除该变量。

例子:

<script>
     toDelete = 5;
  
     // true
     console.log( delete toDelete);
  
     // toDelete is not defined
     console.log(toDelete);
</script>

不使用var, 让orconst关键字将变量设置为全局变量, 并将其用作对象属性。

输出如下:

true
Uncaught ReferenceError: toDelete is not defined

删除删除退货true并在删除变量后尝试访问该变量会引发参考错误, 因为该变量已不再定义。

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

例子:

<script>
     let arr = [1, 2, 3]
  
     console.log( delete arr[0]); //true
     console.log(arr); //[empty, 2, 3]
</script>

输出如下:

JavaScript删除运算符2

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

结论:开发人员还有其他使用方式, 例如将object属性的值设置为nullor未定义。但是该属性仍将存在于对象上, 并且某些运算符对于循环仍会显示nullor未定义属性。

使用删除循环中的property会大大降低程序速度。因此, 仅在绝对有必要删除对象属性时才应使用此方法。


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: