Articles

5 rzeczy, które musisz wiedzieć o operatorze delete w JavaScript

Photo by Markus Winkler on Unsplash

W JavaScript, operator delete jest używany do usuwania właściwości obiektu. Po usunięciu danej właściwości, ta właściwość nie będzie dostępna i zwraca undefined.

Wywołanie operatora delete zwraca true gdy usuwa właściwość i false w przeciwnym wypadku. działa tylko na właściwości obiektu, nie ma wpływu na nazwy zmiennych lub funkcji.

Operator delete nie powinien być używany na predefiniowanych właściwościach obiektów JavaScript, takich jak windowMath, i Date obiekty. Może to spowodować awarię aplikacji.

Przeanalizujmy kilka faktów na temat operatora delete.

Usuwanie właściwości obiektu

Jedynym sposobem na całkowite usunięcie właściwości obiektu w JavaScript jest użycie operatora delete.

Jeśli właściwość, którą próbujesz usunąć, nie istnieje, delete nie będzie miało żadnego efektu i może zwrócić true.

Czy możemy usuwać zmienne w Javascript?

Operator delete usuwa właściwość z obiektu. Nie może usunąć zmiennej. Każda właściwość zadeklarowana za pomocą var nie może być usunięta z zakresu globalnego lub zakresu funkcji.

Jeśli zadeklarujesz zmienną bez var, może ona zostać usunięta. Przyjrzyjmy się poniższemu przykładowi.

operator delete w JavaScript

Zmienna zadeklarowana bez słowa kluczowego var wewnętrznie przechowuje ją jako właściwość obiektu window. Możemy więc usuwać właściwości obiektu window.

Czy możemy usuwać wartości z tablicy?

Ponieważ tablice JavaScript są obiektami, elementy mogą być usuwane za pomocą delete.

delete spowoduje usunięcie właściwości obiektu, ale nie reindeksuje tablicy ani nie aktualizuje jej długości. Sprawia to wrażenie, że jest to undefined.

Użycie delete może pozostawić niezdefiniowane dziury w tablicy. Użyj pop()shift(), lub splice() zamiast.

Czy możemy usunąć wbudowane obiekty?

Usuwanie wbudowanych obiektów jak np.w obiekty takie jak MathDate, oraz window są niebezpieczne i mogą spowodować awarię całej aplikacji.

Usuwanie niekonfigurowalnych właściwości

Właściwości obiektów, oprócz value, mają trzy specjalne atrybuty:

  • writable – jeśli true, wartość może być zmieniona, w przeciwnym razie jest tylko do odczytu.
  • enumerable – jeśli true, to jest wymieniony w pętlach, w przeciwnym razie nie jest wymieniony.
  • configurable – jeżeli true, właściwość można usunąć lub zmienić jej atrybuty, w przeciwnym wypadku nie można jej zmienić.

Wartości przypisane za pomocą Object.defineProperty i ustawione na configurable: false w obiekcie nie mogą być usunięte.

W trybie ścisłym, rzuci błąd, jeśli spróbujesz usunąć właściwość, która nie jest konfigurowalna.

Wniosek

delete jest jedynym prawdziwym sposobem na usunięcie właściwości obiektu bez żadnych pozostałości, ale działa ~100 razy wolniej, jeśli używasz delete w pętlach.

Alternatywnym rozwiązaniem jest ustawienie wartości na un zdefiniowane jak object = undefined. Nie usuwa to całkowicie właściwości, po prostu ustawia wartość na undefined. wybór ten nie jest dokładnie wybitnym rozwiązaniem, ale jeśli wykorzystasz go z uwagą, będziesz w stanie poprawić wydajność.

To wszystko! Mam nadzieję, że ten tekst może pomóc w zrozumieniu operatora delete

Dzięki za przeczytanie 🙂

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *