以下是删除运算符的示例。
- 例子:
filter_none
编辑
关play_arrow
链接
亮度_4
代码<script>let emp = {firstName: "Raj" ,lastName: "Kumar" ,salary: 40000}console.log( delete emp.salary);console.log(emp);</script>chevron_rightfilter_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>
输出如下:
如上图所示, 删除个人电话退货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>
输出如下:
因此, 使用pop(), shift()or拼接()方法显然是删除数组元素的更好方法。
结论:开发人员还有其他使用方式, 例如将object属性的值设置为nullor未定义。但是该属性仍将存在于对象上, 并且某些运算符对于循环仍会显示nullor未定义属性。
使用删除循环中的property会大大降低程序速度。因此, 仅在绝对有必要删除对象属性时才应使用此方法。