Articles

5 dingen die je moet weten over de delete operator in JavaScript

Foto door Markus Winkler op Unsplash

In JavaScript, wordt de delete-operator gebruikt om een eigenschap van een object te verwijderen. Nadat de eigenschap is verwijderd, is deze niet meer toegankelijk en wordt undefined geretourneerd.

De aanroeping van de operator delete retourneert true wanneer het een eigenschap verwijdert en false anders. Het is alleen effectief op de eigenschappen van een object, het heeft geen effect op variabele of functienamen.

De delete operator moet niet worden gebruikt op voorgedefinieerde JavaScript objecteigenschappen zoals windowMath, en Date objecten. Het kan je applicatie laten crashen.

Laten we eens wat feiten over de delete operator onder de loep nemen.

Eigenschappen van objecten verwijderen

De enige manier om de eigenschappen van een object volledig te verwijderen in JavaScript is door gebruik te maken van delete operator.

Als de eigenschap die je probeert te verwijderen niet bestaat, zal delete geen effect hebben en kan het true retourneren.

Kunnen we variabelen verwijderen in Javascript?

De operator verwijderen verwijdert een eigenschap van een object. Hij kan geen variabele verwijderen. Een eigenschap die wordt gedeclareerd met var kan niet worden verwijderd uit het globale bereik of uit het bereik van een functie.

Als u een variabele declareert zonder var, kan deze worden verwijderd. Laten we eens kijken naar het onderstaande voorbeeld.

delete operator in JavaScript

De variabele die wordt gedeclareerd zonder het var sleutelwoord, wordt intern opgeslagen als een eigenschap van het window object. We kunnen dus de eigenschappen van het window object verwijderen.

Kunnen we waarden uit een array verwijderen?

Omdat JavaScript arrays objecten zijn, kunnen elementen worden verwijderd met behulp van delete.

delete zal de object eigenschap verwijderen, maar zal de array niet opnieuw indexeren of de lengte ervan bijwerken. Hierdoor lijkt het alsof het undefined is.

Het gebruik van delete kan ongedefinieerde gaten in de array achterlaten. Gebruik in plaats daarvan pop()shift(), of splice().

Kunnen we ingebouwde objecten verwijderen?

Het verwijderen van ingebouwde objecten zoals splice()

Het verwijderen van ingebouwde objecten zoalsin objecten zoals MathDate, en window objecten zijn onveilig, en ze kunnen je hele applicatie laten crashen.

Het verwijderen van niet-configureerbare eigenschappen

Object eigenschappen, naast een value, heeft drie speciale attributen:

  • writable – als true, kan de waarde worden veranderd, anders, is het alleen-lezen.
  • enumerable – als true, wordt het in lussen vermeld, anders niet vermeld.
  • configurable – als true, de eigenschap kan worden verwijderd of de attributen kunnen worden gewijzigd, anders, kan het niet worden gewijzigd.

De waarden die zijn toegewezen met behulp van Object.defineProperty en zijn ingesteld op configurable: false in een object kunnen niet worden verwijderd.

In strikte modus, wordt er een fout weergegeven als u een niet-configureerbare eigenschap probeert te verwijderen.

Conclusie

delete is de enige echte manier om de eigenschappen van een object te verwijderen zonder dat er restjes achterblijven, maar het werkt ~100 keer langzamer als je delete in lussen gebruikt.

De alternatieve oplossing is het instellen van de waarde op ungedefinieerd zoals object = undefined. Het verwijdert de eigenschap niet volledig, maar zet de waarde op ongedefinieerd. De keuze is niet echt een prominente oplossing, maar als je er voorzichtig gebruik van maakt dan kun je de performance verbeteren.

Dat is alles! Ik hoop dat deze tekst helpt om de delete operator te doorgronden

Bedankt voor het lezen 🙂

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *