Sobes.tech
Intern

Jakie operatory istnieją w JavaScript?

sobes.tech AI

Odpowiedź od AI

W JavaScript istnieje kilka typów operatorów, które pełnią różne funkcje:

  • Operatory przypisania: Przypisują wartość do zmiennej.

    • = (przypisanie proste)
    • +=, -=, *=, /=, %= (operacje przypisania złożonego)
    • **= (przypisanie z potęgowaniem)
    • <<=, >>=, >>>= (przypisanie z przesunięciem)
    • &=, |=, ^= (przypisanie z operacjami bitowymi)
    • &&=, ||=, ??= (przypisanie logiczne)
  • Operatory porównania: Porównują dwie wartości i zwracają wartość boolean.

    • == (równość)
    • != (nierówność)
    • === (ścisła równość)
    • !== (ścisła nierówność)
    • > (większe)
    • < (mniejsze)
    • >= (większe lub równe)
    • <= (mniejsze lub równe)
  • Operatory arytmetyczne: Wykonują operacje matematyczne.

    • + (dodawanie)
    • - (odejmowanie)
    • * (mnożenie)
    • / (dzielenie)
    • % (reszta z dzielenia)
    • ** (potęgowanie)
    • ++ (inkrementacja)
    • -- (dekrementacja)
  • Operatory bitowe: Wykonują operacje na poziomie bitów liczby.

    • & (bitowe AND)
    • | (bitowe OR)
    • ^ (bitowe XOR)
    • ~ (bitowe NOT)
    • << (przesunięcie w lewo)
    • >> (przesunięcie w prawo ze znakiem)
    • >>> (przesunięcie w prawo bez znaku)
  • Operatory logiczne: łączą lub odwracają wartości boolean.

    • && (logiczne AND)
    • || (logiczne OR)
    • ! (logiczne NOT)
  • Operatory łańcuchów znaków: Pracują na stringach.

    • + (łączenie)
  • Operator warunkowy (ternarny): Skrócona forma if...else.

    // warunek ? wyrażenie1 : wyrażenie2
    let result = (a > b) ? "a jest większe od b" : "b jest większe lub równe a";
    
  • Operator przecinka: Wykonuje wiele wyrażeń, zwraca wartość ostatniego.

    let x = 0;
    let y = (x++, 5); // x staje się 1, y staje się 5
    
  • Operatory relacji: Sprawdzają typ i istnienie właściwości.

    • in (sprawdza, czy właściwość istnieje w obiekcie)
    // 'propertyName' in object
    console.log('length' in [1, 2, 3]); // true
    
    • instanceof (sprawdza, czy obiekt jest instancją klasy)
    // object instanceof className
    function Car() {}
    let myCar = new Car();
    console.log(myCar instanceof Car); // true
    
  • Operator unarny + i -:

    • + (zamienia operandę na liczbę)
    console.log(+"5"); // 5 (liczba)
    
    • - (zamienia operandę na liczbę i odwraca znak)
    console.log(-"10"); // -10 (liczba)
    
  • Operatory typu:

    • typeof (zwraca łańcuch wskazujący typ operand)
    // typeof operand
    console.log(typeof 42); // "number"
    console.log(typeof "hello"); // "string"
    
    • delete (usuwa właściwość obiektu lub element tablicy)
    // delete object.property
    // delete array[index]
    let obj = { a: 1, b: 2 };
    delete obj.a;
    console.log(obj); // { b: 2 }
    
  • Operator grupowania ( ): Określa kolejność wykonywania operacji.

    let z = (2 + 3) * 4; // Operacje w nawiasach wykonywane są jako pierwsze
    
  • Operator new: Tworzy nową instancję obiektu.

    // new Constructor([arguments])
    let date = new Date();
    
  • Operator super: Wywołuje metodę klasy nadrzędnej.

    class Parent {
      greet() {
        console.log("Cześć z Parent");
      }
    }
    class Child extends Parent {
      greet() {
        super.greet(); // Wywołanie metody rodzica
        console.log("Cześć z Child");
      }
    }
    
  • Operator this: Odnosi się do bieżącego kontekstu wykonania.

  • Operator void: Wykonuje wyrażenie i zwraca undefined.

    // void expression
    console.log(void 0); // undefined
    
  • Operatory nullish coalescing i optional chaining:

    • ?? (operator łączenia null - zwraca prawy operand, jeśli lewy jest null lub undefined)
    // left ?? right
    let val = undefined ?? "domyślnie"; // val będzie "domyślnie"
    
    • ?. (operator opcjonalnego łańcuchowania - bezpieczny dostęp do właściwości w łańcuchu, jeśli pośrednia wartość jest null lub undefined)
    // object?.property?.method()
    let user = { address: { city: "NYC" } };
    console.log(user.address?.zipCode); // undefined (bez błędu)