Sobes.tech
Junior

Чӣ роҳҳои эҷоди функсияҳоро медонед?

sobes.tech AI

Ҷавоб аз AI

Барои эҷоди функсияҳо дар JavaScript чанд роҳ вуҷуд дорад, ҳар яке бо хусусиятҳои худ:

  1. Декларацияҳои функсия (Function Declarations): Роҳи классикӣ барои эҷоди функсия. Онҳо (hoisted) боло дар доираи назоратӣ бардошта мешаванд, ки имкон медиҳад, ки онҳоро пеш аз декларация даъват кард.

    // Декларацияи функсия бо истифодаи function
    function greet(name) {
      return "Салом, " + name + "!";
    }
    
  2. Ифодаҳои функсия (Function Expressions): Функсия ҳамчун қисми израз ва ба тағйирёбанда таъин карда мешавад. Онҳо (not hoisted) дар ҳамон доираи декларацияҳои функсия бардошта намешаванд.

    // Ифодаи функсия
    const greet = function(name) {
      return "Салом, " + name + "!";
    };
    
  3. Функсияҳои стрелка (Arrow Functions): Формати кӯтоҳ барои ифодаҳои функсия. Аз функсияҳои классикӣ бо хусусиятҳои this ва набуди аргументҳои худ фарқ мекунанд (arguments).

    // Функсияи стрелка
    const greet = (name) => {
      return "Салом, " + name + "!";
    };
    
    // Формати кӯтоҳ бо баргардониши ғайрирасмӣ
    const greetShort = (name) => "Салом, " + name + "!";
    
  4. Функсияҳои конструктор (Constructor Functions): Барои эҷоди объектҳо истифода мешаванд. Бо калимаи калидии new даъват мешаванд.

    // Функсияи конструктор
    function Person(name, age) {
      this.name = name;
      this.age = age;
    }
    
    // Эҷоди намунаи объект бо истифодаи конструктор
    const person1 = new Person("Алексей", 30);
    
  5. Методҳои синфи (Class Methods): Дар синфҳо (синтаксиси шакл надодаи насле) функсияҳо ҳамчун методҳо муайян карда мешаванд.

    // Декларацияи синф бо метод
    class Greeter {
      greet(name) {
        return "Салом, " + name + "!";
      }
    }
    
    // Эҷоди намунаи синф ва даъвати метод
    const greeter = new Greeter();
    const message = greeter.greet("Дунё");
    
  6. IIFE (Функсияҳои фавран даъватшуда): Ифодаи функсия, ки фавран пас аз эҷод кардан иҷро мешавад. Баъзан барои эҷоди доираи маҳдуди маҳаллӣ истифода мешавад.

    // IIFE
    (function() {
      // Код дар дохили IIFE
      console.log("Ин функсия фавран иҷро мешавад!");
    })();
    

Ҳар як усул дорои плюсҳо ва минусҳо аст, ва интихоби он вобаста ба вазифа ва контекст мебошад.