O exclusão do operador não é muito comumente usado em JavaScript, mas suas características são realmente muito estranhas.
1. Exclua as propriedades do objeto, código:
A cópia do código é a seguinte:
var o = {
A: 1,
B: 2
};
excluir OA;
alerta (OA); //indefinido
Então, é excluído o atributo do objeto ou o valor do atributo do objeto? Comecei a pensar que o exclusão deve ser o valor, porque o resultado é indefinido e não há erro. Mas, de fato, minha opinião está errada, dê um exemplo:
A cópia do código é a seguinte:
var o = {};
var a = {
Pro: "Zhenn"
};
oc = a;
excluir OC; // Exclua a propriedade A do objeto O
console.log (OC); // indefinido
console.log (A.Pro); // Zhenn
Através do código acima, não é difícil ver que, após a exclusão de OC, o valor apontado pelo OC não é excluído, ou seja, objeto A ainda existe; caso contrário, o A.Pro não deve poder passar no nível de compilação. Falando nisso, pode -se entender que excluir os atributos de um objeto dessa maneira, o que é realmente equivalente a excluir uma referência ao valor do atributo no objeto, mas esse valor ainda está na pilha de objetos!
2. Para a operação da matriz, observe o código primeiro:
A cópia do código é a seguinte:
var arr = [1,2,3];
excluir arr [2];
console.log (arr.length); // 3
console.log (arr); // [1,2, indefinido]
Foi provado novamente que o exclusão não exclui o elemento, apenas exclui o valor -chave correspondente ao elemento. Para entender melhor a essência de excluir, compare -o com o método pop na matriz. do seguinte modo:
A cópia do código é a seguinte:
var arr = [1,2,3];
Arr.pop ();
console.log (arr); // [1,2]
console.log (arr.length) // 2
A verdade deve ser revelada agora.
3. As operações acima em objetos e matrizes são fáceis de entender, mas as operações em variáveis são inevitavelmente difíceis de entender. O código é o seguinte:
A cópia do código é a seguinte:
var a = 1;
excluir um;
alerta (a); // 1
função fn () {return 42; }
excluir fn;
alerta (fn ()); // 42
b = 2;
excluir b;
alerta (b); // b não está definido;
É difícil de explicar. É também uma variável global, mas a variável B declarada com VAR não pode ser excluída. É impossível dizer que excluir é muito estranho. Na explicação dada pela ECMA, significa apenas que as variáveis declaradas através do VAR e das funções declaradas através da função têm o recurso DONTDELETE e não podem ser excluídas.