El Operador Delete no se usa muy comúnmente en JavaScript, pero sus características son realmente muy extrañas.
1. Elimine las propiedades del objeto, código:
La copia del código es la siguiente:
var o = {
A: 1,
B: 2
};
eliminar oa;
alerta (OA); //indefinido
Entonces, ¿se elimina el atributo del objeto o el valor de atributo del objeto? Comencé a pensar que el Delete debería ser el valor, porque el resultado no está definido y no hay error. Pero de hecho, mi opinión es incorrecta, da un ejemplo:
La copia del código es la siguiente:
var o = {};
var a = {
Pro: "Zhenn"
};
oc = a;
eliminar OC; // Eliminar la propiedad A de Object O
console.log (OC); // indefinido
console.log (a.pro); // Zhenn
A través del código anterior, no es difícil ver que después de eliminar el OC, el valor apuntado por OC no se elimina, es decir, el objeto A todavía existe, de lo contrario A.pro no debe poder pasar el nivel de compilación. Hablando de esto, se puede entender que Eliminar elimina los atributos de un objeto de esta manera, que en realidad es equivalente a eliminar una referencia al valor del atributo en el objeto, ¡pero este valor todavía está en la pila de objetos!
2. Para la operación de la matriz, mire primero el código:
La copia del código es la siguiente:
var arr = [1,2,3];
eliminar arr [2];
console.log (arr.length); // 3
console.log (arr); // [1,2, indefinido]
Se ha demostrado nuevamente que Delete realmente no elimina el elemento, solo elimina el valor clave correspondiente al elemento. Para comprender mejor la esencia de Delete, compare con el método POP en la matriz. como sigue:
La copia del código es la siguiente:
var arr = [1,2,3];
arr.pop ();
console.log (arr); // [1,2]
console.log (arr.length) // 2
La verdad debería ser revelada ahora.
3. Las operaciones anteriores en objetos y matrices son fáciles de entender, pero las operaciones en variables son inevitablemente difíciles de entender. El código es el siguiente:
La copia del código es la siguiente:
var a = 1;
eliminar a;
alerta (a); // 1
función fn () {return 42; }
eliminar fn;
alerta (fn ()); // 42
b = 2;
eliminar b;
alerta (b); // b no está definido;
Es difícil de explicar. También es una variable global, pero la variable B declarada con VAR no se puede eliminar. Es imposible decir que Delete es muy extraño. En la explicación dada por ECMA, solo significa que las variables declaradas a través de VAR y las funciones declaradas a través de la función tienen la característica DontDelete y no se pueden eliminar.