Sobes.tech
Intern

Кои оператори съществуват в JavaScript?

sobes.tech AI

Отговор от AI

В JavaScript съществуват няколко типа оператори, които изпълняват различни функции:

  • Оператори за присвояване: Присвояват стойност на променлива.

    • = (просто присвояване)
    • +=, -=, *=, /=, %= (съставни присвоявания)
    • **= (присвояване с издигане на степен)
    • <<=, >>=, >>>= (присвояване със сдвиг)
    • &=, |=, ^= (присвояване с битови операции)
    • &&=, ||=, ??= (логическо присвояване)
  • Оператори за сравнение: Сравняват две стойности и връщат булева стойност.

    • == (равенство)
    • != (неравенство)
    • === (строго равенство)
    • !== (строго неравенство)
    • > (по-голямо)
    • < (по-малко)
    • >= (по-голямо или равно)
    • <= (по-малко или равно)
  • Арифметични оператори: Извършват математически операции.

    • + (събиране)
    • - (изваждане)
    • * (умножение)
    • / (деление)
    • % (остатък от деление)
    • ** (повдигане на степен)
    • ++ (инкремент)
    • -- (декремент)
  • Битови оператори: Извършват операции на ниво отделни битове на числото.

    • & (битово И)
    • | (битово ИЛИ)
    • ^ (битово изключващо ИЛИ)
    • ~ (битово НЕ)
    • << (леви сдвигове)
    • >> (десни сдвигове с запазване на знака)
    • >>> (десен сдвиг с попълване с нули)
  • Логически оператори: Обединяват или инвертират булеви стойности.

    • && (логическо И)
    • || (логическо ИЛИ)
    • ! (логическо НЕ)
  • Стринг оператори: Работят със стрингове.

    • + (конкатенация)
  • Условен (тернарен) оператор: Кратка форма на if...else.

    // условие ? израз1 : израз2
    let result = (a > b) ? "a е по-голямо от b" : "b е по-голямо или равно на a";
    
  • Оператор запетая: Изпълнява няколко израза, връщайки стойността на последния.

    let x = 0;
    let y = (x++, 5); // x става 1, y става 5
    
  • Оператори за отношение: Проверяват типа и наличието на свойства.

    • in (проверява дали свойство съществува в обект)
    // 'propertyName' in object
    console.log('length' in [1, 2, 3]); // true
    
    • instanceof (проверява дали обект е екземпляр на клас)
    // object instanceof className
    function Car() {}
    let myCar = new Car();
    console.log(myCar instanceof Car); // true
    
  • Унарни оператори плюс и минус:

    • + (преобразува операнда в число)
    console.log(+"5"); // 5 (число)
    
    • - (преобразува операнда в число и инвертира знака)
    console.log(-"10"); // -10 (число)
    
  • Оператори за тип:

    • typeof (връща низ, указващ типа на операнда)
    // typeof operand
    console.log(typeof 42); // "number"
    console.log(typeof "hello"); // "string"
    
    • delete (премахва свойство от обект или елемент от масив)
    // delete object.property
    // delete array[index]
    let obj = { a: 1, b: 2 };
    delete obj.a;
    console.log(obj); // { b: 2 }
    
  • Групов оператор ( ): Определя реда на изпълнение на операциите.

    let z = (2 + 3) * 4; // Изчисленията в скобите се изпълняват първи
    
  • Оператор new: Създава нов екземпляр от обект.

    // new Constructor([arguments])
    let date = new Date();
    
  • Оператор super: Извиква метод на родителския клас.

    class Parent {
      greet() {
        console.log("Hello from Parent");
      }
    }
    class Child extends Parent {
      greet() {
        super.greet(); // Вика метода на родителя
        console.log("Hello from Child");
      }
    }
    
  • Оператор this: Позовава се на текущия контекст на изпълнение.

  • Оператор void: Изпълнява израз и връща undefined.

    // void expression
    console.log(void 0); // undefined
    
  • Nullish coalescing и optional chaining оператори:

    • ?? (nullish coalescing оператор - връща десния операнд, ако левият е null или undefined)
    // left ?? right
    let val = undefined ?? "default"; // val ще бъде "default"
    
    • ?. (optional chaining оператор - безопасен достъп до свойства в верига, ако междинната стойност е null или undefined)
    // object?.property?.method()
    let user = { address: { city: "NYC" } };
    console.log(user.address?.zipCode); // undefined (без грешка)