בJAVASCRIPT , פונקציות הן חלק מרכזי בשפה, ויש כמה סוגים של פונקציות בהתאם לאופן שבו הן מוגדרות ולשימושים שלהן. הנה פירוט של הסוגים העיקריים:
הצהרת פונקציה (Function Declarations)
- מוגדרת באמצעות מילת המפתח
function
. - "מוקפצת" (Hoisted): ניתן להשתמש בה לפני שהיא מוגדרת בקוד.
function sayHello() { console.log("Hello!"); } sayHello(); // Output: Hello!
ביטוי פונקציה (Function Expressions)
- פונקציה שמוקצית למשתנה או לקבועה.
- אינה "מוקפצת": לא ניתן להשתמש בה לפני שהיא מוגדרת.
const greet = function() { console.log("Hi!"); }; greet(); // Output: Hi!
פונקציות חץ (Arrow Functions)
- הוצגו ב-ES6.
- בעלות תחביר קצר יותר ולא קושרות את המילה
this
בעצמן
const add = (a, b) => a + b; console.log(add(2, 3)); // Output: 5
פונקציות אנונימיות (Anonymous Functions)
- פונקציות ללא שם.
- בשימוש נפוץ כCALLBACK או כARGS לפונקציות אחרות.
setTimeout(function() { console.log("Anonymous Function!"); }, 1000
פונקציות שמבוצעות מיד (IIFE – Immediately Invoked Function Expressions)
- מבוצעות מיד לאחר שהן מוגדרות.
(function() { console.log("IIFE"); })(); // Output: IIFE
פונקציות גנרטור (Generator Functions)
- הוצגו ב-ES6.
- מוגדרות באמצעות התחביר
function*
. - יכולות להחזיר ערכים מרובים באמצעות המילה
yield
.
function* numbers() { yield 1; yield 2; yield 3; } const gen = numbers(); console.log(gen.next().value); // Output: 1
פונקציות אסינכרוניות (Async Functions)
- הוצגו ב-ES8.
- משמשות לפעולות אסינכרוניות ומחזירות אובייקט
Promise
.
async function fetchData() { const data = await fetch("https://api.example.com"); return data.json(); }
פונקציות בונה (Constructor Functions)
- משמשות ליצירת אובייקטים עם פרוטוטייפ מסוים.
- מופעלות באמצעות המילה
new
.
function Person(name) { this.name = name; } const person = new Person("John"); console.log(person.name); // Output: John
מטודות (Methods)
- פונקציות שמוגדרות כתכונות של אובייקטים.
const obj = { greet: function() { console.log("Hello!"); }, }; obj.greet(); // Output: Hello!
מטודות סטטיות (Static Methods)
- מטודות שמוגדרות על מחלקה ונקראות על המחלקה עצמה ולא על המופע שלה.
class MathUtils { static add(a, b) { return a + b; } } console.log(MathUtils.add(2, 3)); // Output: 5
לסיכום פונקציות בJAVASCRIPT
לכל סוג של פונקציה יש שימושים שונים בהתאם להקשר ולצרכים של התכנות, JS מאפשרת לנו לשמור משתנים כפונקציות first-class functions, שזו תכונה מעניינת וגם חשובה, מאפשרת לנו סגנונות פיתוח מתקדמים כגון functional programing.