Jednoargumentowe operatory ECMAScript

Jednoargumentowe operatory mają tylko jeden parametr, którym jest obiekt lub wartość, które mają być przetworzone. Są to najprostsze operatory w ECMAScript.

delete

Operator delete usuwa odwołania do właściwości lub metod obiektu, które zostały wcześniej zdefiniowane. Na przykład:

var o = new Object;
o.name = "David";
alert(o.name);	//Wyświetl "David"
delete o.name;
alert(o.name);	//Wyświetla "undefined"

W tym przykładzie, usunięcie atrybutu name oznacza przymusowe解除odniesienie do niego, ustawienie go na undefined (tj. wartość tworzonej niezainicjalizowanej zmiennej).

Operator delete nie może usunąć atrybutów i metod niezdefiniowanych przez dewelopera. Na przykład, poniższy kod spowoduje błąd:

delete o.toString;

Nawet jeśli nazwa metody toString jest ważna, to zdanie spowoduje błąd, ponieważ metoda toString() jest oryginalną metodą ECMAScript, a nie zdefiniowaną przez dewelopera.

void

Operator void zwraca undefined dla każdej wartości. Operator ten jest zwykle używany do uniknięcia wyświetlania wartości, które nie powinny być wyświetlane, na przykład, gdy wywołuje się funkcję JavaScript z elementu <a> HTML. Aby to zrobić poprawnie, funkcja nie może zwracać wartości ważnej, w przeciwnym razie przeglądarka wyczyści stronę, pokazując tylko wynik funkcji. Na przykład:

<a href="javascript:window.open('about:blank')">Kliknij mnie</a>

Jeśli wstawisz to zdanie do strony HTML, kliknięcie w link pokaże "[object]" na ekranie.TIY

To dlatego, że metoda window.open() zwraca odniesienie do nowo otwartego okna. Następnie ten obiekt jest przekształcany w ciąg znaków do wyświetlenia.

Aby uniknąć tego efektu, można wywołać funkcję window.open() za pomocą operatora void:

<a href="javascript:void(window.open('about:blank'))">Kliknij mnie</a>

To sprawia, że wywołanie window.open() zwraca undefined, co nie jest wartością ważną, nie jest wyświetlane w oknie przeglądarki.

Wskazówka:Pamiętaj, że funkcje bez wartości zwracają zawsze undefined.

Przedoperacyjny operator inkrementacji/deinkrementacji

Dwa operatory pożyczone bezpośrednio z C (i Java) to operator przedinkrementacji i przeddeinkrementacji.

Przedoperacyjny operator inkrementacji, to zwiększenie wartości o 1, format jest umieszczenie dwóch plusów przed zmienną (++):

var iNum = 10;
++iNum;

Drugi wiersz kodu zwiększa iNum do 11, co jest równoważne:

var iNum = 10;
iNum = iNum + 1;

Tak samo, operator przeddeinkrementacji odjąć 1 z wartości, format jest umieszczenie dwóch minusów przed zmienną (--):

var iNum = 10;
--iNum;

W tym przykładzie, drugi wiersz kodu zmniejsza wartość iNum do 9.

Przy użyciu operatorów przedoperacyjnych, pamiętaj, że operatory inkrementacji i deinkrementacji zachodzą przed obliczeniem wyrażenia. Oto przykład:

var iNum = 10;
--iNum;
alert(iNum);	// wyjście "9"
alert(--iNum);	// wyjście "8"
alert(iNum);	// wyjście "8"

Drugi wiersz kodu wykona operację dekrementacji na iNum, trzeci wiersz kodu wyświetli wynik ("9"). Czwarty wiersz kodu ponownie wykona operację dekrementacji na iNum, tym razem przed operacją wyjścia, wynik to "8". Aby udowodnić, że wszystkie operacje dekrementacji zostały wykonane, piąty wiersz kodu ponownie wyświetli "8".

W wyrażeniach arytmetycznych, priorytet operatorów preinkrementacyjnych i predekrementacyjnych jest taki sam, więc należy je obliczać w kolejności od lewej do prawej. Na przykład:

var iNum1 = 2;
var iNum2 = 20;
var iNum3 = --iNum1 + ++iNum2;	// równa się "22"
var iNum4 = iNum1 + iNum2;		// równa się "22"

W poprzednim kodzie, iNum3 wynosi 22, ponieważ wyrażenie do obliczenia to 1 + 21. Zmienna iNum4 również wynosi 22, ponieważ jest to również 1 + 21.

Operator dekrementacji/postdekrementacji

Istnieją również dwa operatory zapożyczone bezpośrednio z C (i Java), tj. operator dekrementacji i operator inkrementacji.

Operator dekrementacji również zwiększa wartość o 1, a jego forma to dodanie dwóch plusów (++) po zmiennej:

var iNum = 10;
iNum++;

Nieoczekiwanie, operator dekrementacji również zmniejsza wartość o 1, a jego forma to dodanie dwóch minusów (--) po zmiennej:

var iNum = 10;
iNum--;

Drugi wiersz kodu zmniejsza wartość iNum do 9.

W przeciwieństwie do operatorów prefiksowych, operatorzy postinkrementacyjne i postdekrementacyjne są wykonywane po obliczeniu wyrażenia, które je zawiera. Oto przykład:

var iNum = 10;
iNum--;
alert(iNum);	// wyjście "9"
alert(iNum--);	// wyjście "9"
alert(iNum);	// wyjście "8"

Podobnie jak w przykładzie z prefiksowymi operatorami, drugi wiersz kodu wykona operację dekrementacji na iNum, trzeci wiersz kodu wyświetli wynik ("9"). Czwarty wiersz kodu kontynuuje wyświetlanie wartości iNum, tym razem z zastosowaniem operatora dekrementacji w tym samym zdaniu. Ponieważ dekrementacja występuje po obliczeniu wyrażenia, liczba wyświetlona przez to zdanie to "9". Po wykonaniu piątego wiersza kodu, funkcja alert wyświetli "8", ponieważ po wykonaniu czwartego wiersza kodu i przed wykonaniem piątego wiersza kodu, została wykonana operacja dekrementacji.

W wyrażeniach arytmetycznych, priorytet operatorów postinkrementacyjnych i postdekrementacyjnych jest taki sam, więc należy je obliczać w kolejności od lewej do prawej. Na przykład:

var iNum1 = 2;
var iNum2 = 20;
var iNum3 = iNum1-- + iNum2++;	// równa się "22"
var iNum4 = iNum1 + iNum2;		// równa się "22"

W poprzednim kodzie, iNum3 wynosi 22, ponieważ wyrażenie oblicza 2 + 20. Zmienna iNum4 również wynosi 22, chociaż oblicza 1 + 21, ponieważ operatory zwiększania i zmniejszania zachodzą po przypisaniu wartości do iNum3.

Jedynooperator dodawania i odjęcia

Większość ludzi zna jedynooperator dodawania i odjęcia, ich użycie w ECMAScript jest podobne do tego, czego nauczyli się w szkole średniej.

Jedynooperator dodawania w zasadzie nie ma wpływu na liczby:

var iNum = 20;
iNum = +iNum;
alert(iNum);	//Wyjście "20"

Ten kod zastosował jedynooperator dodawania do liczby 20, wynik jest nadal 20.

Choć jedynooperator dodawania nie ma działania na liczby, ma ciekawe efekty na ciągi, przekształcając je w liczby.

var sNum = "20";
alert(typeof sNum);	//Wyjście "string"
var iNum = +sNum;
alert(typeof iNum);	//Wyjście "number"

Ten kod przekształca ciąg "20" w prawdziwą liczbę. Gdy jedynooperator dodawania działa na ciąg, oblicza go w sposób podobny do parseInt(), główna różnica polega na tym, że jedynooperator może go przekształcić w wartość dziesiętną tylko dla ciągów zaczynających się od "0x" (oznaczających liczby heksadecymalne). Dlatego "010" jest zawsze przekształcane w 10, a "0xB" w 11.

Z drugiej strony, jedynooperator odjęcia to po prostu obliczenie ujemnej wartości liczby (np. przekształcenie 20 w -20):

var iNum = 20;
iNum = -iNum;
alert(iNum);	//Wyjście "-20"

Podobnie jak jedynooperator dodawania, jedynooperator odjęcia również przekształca ciąg na przybliżony numer, a także oblicza jego ujemną wartość. Na przykład:

var sNum = "20";
alert(typeof sNum);	//Wyjście "string"
var iNum = -sNum;
alert(iNum);		//Wyjście "-20"
alert(typeof iNum);	//Wyjście "number"

W powyższym kodzie, jedynooperator odjęcia przekształci ciąg "-20" w -20 (jedynooperator odjęcia traktuje zarówno heksadecymalne, jak i dziesiętne wartości w sposób podobny do jedynooperatora dodawania, ale dodatkowo oblicza ich ujemną wartość).