תחי ישראל - אין לנו ארץ אחרת

תחי ישראל -אין לנו ארץ אחרת

משתנים מקומיים וגלובאליים ב-JavaScript

מחבר:
בתאריך:

משתנים יכולים להיות מקומיים או גלובאליים.

בעוד משתנים מקומיים מוגדרים בתוך פונקציה, וניתן להשתמש בהם רק בתוך הפונקציה שבתוכה הם הוגדרו, למשתנים גלובאליים ניתן לגשת מכל מקום בדף, ומכל פונקציה בדף.

זה מספיק חשוב כדי שנחזור על זה שוב:

  • משתנים מקומיים (לוקליים) מוגדרים בתוך פונקציה, וניתן להשתמש בהם רק בתוך הפונקציה שבתוכה הם הוגדרו.
  • ל משתנים גלובאליים ניתן לגשת מכל מקום בדף, ומכל פונקציה.

האיור הבא יכול לסייע בהבנת ההבדל שבין משתנים מקומיים לגלובאליים.

global var x
 
function example( ) {
      local var y
}

 

הבנת ההבדל בין משתנים מקומיים וגלובאליים, והאופן שבו משתנים מוגדרים ב-javascript הוא אחד הדברים החשובים ביותר לכל מפתח javascript. הבנת הנושא הזה יכולה לחסוך מכם שעות רבות של ייסורים, ולכן אני ממליץ לכם להקדיש זמן, וללמוד את הדוגמאות הבאות באופן היסודי ביותר.

 

משתנה גלובאלי

משתנה גלובאלי קיים בתוך ומחוץ לפונקציות, ויכול לשמש גם בתוך הפונקציות.

בדוגמה הבאה, המשתנה x מוכרז מחוץ לפונקציה, ואפשר לעשות עליו alert גם בתוך הפונקציה.

var x = 1;

function example1() {
    alert( x );
}

example1();

 

2. משתנה מקומי לפונקציה

ניתן לדרוס את המשתנה הגלובאלי באמצעות משתנה מקומי (לוקלי) שניתן לגשת אליו רק בתוך הפונקציה, ולא מחוץ לפונקציה.

var x = 1;

function example2() {
    var x = 2;
    alert ("inside: " + x); // inside: 2
}

alert ("outside: " + x); // outside: 1

example2();

פרמטרים שמועברים לפונקציה הם מקומיים לפונקציה, ולפיכך משפיעים רק בתוך הפונקציה.

var x = 1;

function example3( x ) {
    alert ("inside: " + x); // inside: 2
}

example3( 2 );

alert ("outside: " + x); // outside: 1

 

3. אין השפעה לבלוקים

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

var x = 1;

function example4() {
    if( 1 + 1 == 2 ) {
        var a = 4;
    }

    alert( a ); // 4
}

example4();

 

4. משהו שרצוי להמנע ממנו כמה שניתן

אם מכריזים על משתנה ללא var, ואפילו בתוך פונקציה, המשתנה הופך לגלובאלי. אבל השתדלו לא להכריז על משתנה ללא var.

בדוגמה הבאה, אף שהמשתנה מוגדר בתוך הפונקציה, הוא דורס את המשתנה באותו שם שהוגדר ברמה הגלובאלית. זה בגלל ש-x מוגדר בתוך הפונקציה ללא var.

var x = 1;

function example2() {
    x = 2;
    alert ("inside: " + x); // inside: 2
}

alert ("outside: " + x); // outside: 2

חובה להכריז על משתנים באמצעות var כדי למנוע התנגשות בין המשתנים בתוך ומחוץ לפונקציות. אם לא תעשו זאת, תגיעו מהר מאוד למצב שבו תקבלו התנהגות לא צפויה של הסקריפטים שלכם בגלל שמשתנים בתוך הפונקציות דורסים את המשתנים בעלי אותו שם בתחום הגלובאלי.

 

לסיכום

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

במדריך הבא, נלמד כיצד לגשת ולטפל בטפסים באמצעות JavaScript.

לכל מדריכי ה-javascript

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

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

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

שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.

המשתמש באתר צריך להיות מודע לכך שאם וכאשר הוא מפתח קוד בשביל פרויקט הוא חייב לשים לב ולהשתמש בסביבת הפיתוח המתאימה ביותר, הבטוחה ביותר, היעילה ביותר וכמובן שהוא צריך לבדוק את הקוד בהיבטים של יעילות ואבטחה. מי אמר שלהיות מפתח זו עבודה קלה ?

השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.

הוסף תגובה חדשה

 

 

ענה על השאלה הפשוטה הבאה כתנאי להוספת תגובה:

מתי הוקמה המדינה?

 

תמונת המגיב

מנחם בתאריך: 07.09.2020

אולי כדאי להוסיף למדריך את ההכרזה החדשה על משתנה let?

תמונת המגיב

ליאל בתאריך: 09.07.2023

16 אירועים ומאיזינים: /javascript/events_and_listeners לא עובד וזה ממש חשוב לנו :((