קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
ראשי ♦ Javascript ♦ Closures in JavaScript | מה זה?

Closures in JavaScript | מה זה?

וינר יאיר 13 בנובמבר 2021 אין תגובות

כשאני נתקלתי לראשונה בClosures זה היה באיזה קורס javascript קצר שעשיתי , וכבר בשיעור הראשון (או השני) מה שלמדנו היה Closures , אני זוכר שכל התלמידים היו מבולבלים מאד מהרעיון של Closures. אבל אם לומר את האמת זה היה צעד שהכניס את רובנו לעניינים מהר יחסית, מאז ועד היום אני פוגש לא מעט עבודה עם Closures, בעבודה, במבחני קבלה, וקטעי קוד שונים באינטרנט ועוד… וקיצור Closures הוא משהו שחשוב לדעת.

אז מה זה Closures ?

בהכי פשוט Closure הוא פונקציה שמחזירה פונקציה. כך שיש outer scope ו inner scope.
אם תחשבו על זה לרגע, גם המסמך שלכם , הסקופ הגלובלי , הוא סוג של Closure ברגע שהוספתם פונקציה כלשהי ומעלייה יהיה משתנה כלשהו. ובנימה יותר עמוקה – Lexical scoping , עם שימוש ב Closures נוצר מעיין סקופ נפרד כך שישנה פונקציה חיצונית שמתפקדת על הסקופ ההחיצוני שכן יכולה להשתנות בהתאם למשתנים שתעבירו לה מבחוץ, ופונקציה פנימית שעושה שימוש בסקופ זה. לכל Closure יש 3 היקפים:

  • הסקופ הלוקלי שלה
  • הסקופ של הפונקציה החיצונית
  • והסקופ הגלובלי

הדבר מאפשר לנו לייצר סביבה נפרדת וגמישות ופוקציונאליות נחוצה לעבודה. ניתן כמה דוגמאות בסיסיות רק לצורך ההבנה:

דוגמאות ל Closures

לצורך הדוגמה נבנה חיבור בין שני מספרים עם Closure :

function combineNumbers(x){
    return function(y){
        return x+y;
    }
}


const one = combineNumbers(1);
const ten = combineNumbers(10);

console.log(one(1))
console.log(one(10))

אין הרבה משמעות מעשית לדוגמה, אלא יותר ברעיון שניתן לבנות פונקציה שמחזירה פונקציה (אנונימית במקרה הזה) וכן השימוש ביישום.

function combineNumbers(d){
    const x = 5;
    return function(){
        return x+d;
    }
}


const one = combineNumbers(1);
const ten = combineNumbers(10);

console.log(one())
console.log(ten())
console.dir(one)

דוגמה נוספת, אפשר להשתמש בסקופ של הפונקציה החיצונית ולהשתמש בפונקציה הפנימית שתחזיר ערך אחר.
אם תדפיסו console.dir של הפונקציה תוכלו לראות שהיא אכן Closure ומי הסקופ שלה:

דוגמאות מעשיות עם Closures

כל שימוש בפונקציה שמחזירה פונקציה היא למעשה closures עם זה fetch שמחזיר פרומיס כך שתחזירו מתוך then פונקציה, מדובר ב closure. כנל eventlistener , calbacks, higher-order functions .

לסיכום Closures

לא כל שפה מאפשרת גמישות כמו javascript וכן ברוב השפות כל תראו שימושים דומים ל closures , יש מקומות שמכנים זאת כ functional programing ומאד חשוב להכיר ולהבין את הנושא הזה . עוד מידע ודוגמאות תוכלו למצוא בקישור הזה מאתר mozilla המפורסם.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

פוסטים קשורים:

ראיון-עבודה-מתכנת-debounceטיפ לראיון עבודה | Debounce in Javascript תמונת אווירה של קוביות ואת מוזהבתמדריך javascript למתחיל 101 (שיטת כתיבה) לימודי javascript - for loop offor loop of | איטרציה למערכים ב javascript. עם אינדקס מדריך ריאקט שיעור useReducerמדריך ריאקט – react hooks | useReducer
closure javascript

אודות המחבר

יאיר וינר להציג את כל הפוסטים של וינר יאיר


« פוסט קודם
פוסט הבא »

השארת תגובה

ביטול

חיפוש באתר
בחירת העורכים
29 בדצמבר 2023 עידן יצחקי

שדה טקסט עשיר עם תמונות

אתם הולכים להיות מופתעים עד כמה HTML יכול להיות חכם ולבצע משהו כל כך מורכב, שאם אנחנו היינו רוצים ליצור

1 באוקטובר 2021 עידן יצחקי

איך למשוך דינמית favicon של אתרים אחרים ב-JS

בפוסט זה נראה איך אפשר על פי לינקים בדף למשוך את ה-favicon מהדומיין שלהם באופן דינמי, בדיקה של תקינות התמונה

פופולרי
Javascript functions – היכרות עם סוגי פונקציות
Javascript
21 בדצמבר 2024 אין תגובות
Nested routing in angular standalone component
Typescript
15 בנובמבר 2024 תגובה אחת
בחרו לפי תגיות
angular blockchain css ethers express front-end fullstack GQL html javascript next js nextjs nodejs react hooks reactjs solidity webgl אנגולר בלוקציין וורדפרס לימודי אנגולר לימודי וורדפרס לימוד ריאקט מדריך front-end מדריך GQL מדריך אנגולר מדריך וורדפרס מדריך חינם react מדריך ריאקט מפתח בלוק מפתח בלוקציין מתכנת front-end מתכנת בלוקציין מתכנת פרונט סולידיטי קורס front end קורס fullstack קורס nextjs קורס אנגולר קורס בלוקציין קורס בלוקציין בחינם קורס סולידיטי קורס ריאקט קורס תכנות קורס תכנות בחינם
סינון על פי קטגוריות
CSS fullstack HTML IIS Javascript nodeJs SEO Typescript אנגולר בלוקציין בניית אתרים וורדפרס חיפוש עבודה כלים נוספים כללי נגישות קורסים ריאקט תלת מימד תקלות ופתרונות
צור קשר
כל הזכויות שמורות לקודקודייל
ליצירת קשר: @ קודקודייל
גלילה לראש העמוד