Sparround

Funksiyalar, scope və closure-lər

Funksiya yazmağın üç əsas yolu:

  • Declaration: function login(user) {...} — hoisting olunur (elandan əvvəl çağırıla bilər)
  • Expression: const login = function(user) {...}
  • Arrow: const login = (user) => {...} — qısa sintaksis, öz this-i yoxdur

Arrow funksiyalar test kodunda hər yerdədir: callback-lərdə (items.map(i => i.name)), test bloklarında (test('...', async ({ page }) => {...})).

Default parametrlər test helper-ləri üçün faydalıdır: function createUser(role = 'customer') {...}.

Scope — dəyişənin görünmə dairəsi. let/const block-scoped-dur: { } daxilində elan olunan dəyişən bayırda görünmür.

Closure — funksiyanın öz yarandığı mühitin dəyişənlərini "yadda saxlaması". Praktik istifadə: konfiqurasiya olunmuş helper yaratmaq:

Test kodunda closure-lər fixture-lərin və factory funksiyaların əsasında dayanır — məsələn, makeApiClient(baseUrl) çağırışı baseUrl-i yadda saxlayan client qaytarır.

İnterview sualı üçün qısa closure tərifi hazırla: "Closure — funksiya + onun yarandığı lexical mühit. Funksiya xarici scope-un dəyişənlərinə, hətta o scope bitəndən sonra da, çıxış saxlayır."

📚 Mənbələr və sənədlər