משתנים מקומיים וגלובאליים ב-JavaScript
משתנים יכולים להיות מקומיים או גלובאליים.
בעוד משתנים מקומיים מוגדרים בתוך פונקציה, וניתן להשתמש בהם רק בתוך הפונקציה שבתוכה הם הוגדרו, למשתנים גלובאליים ניתן לגשת מכל מקום בדף, ומכל פונקציה בדף.
זה מספיק חשוב כדי שנחזור על זה שוב:
- משתנים מקומיים (לוקליים) מוגדרים בתוך פונקציה, וניתן להשתמש בהם רק בתוך הפונקציה שבתוכה הם הוגדרו.
- ל משתנים גלובאליים ניתן לגשת מכל מקום בדף, ומכל פונקציה.
האיור הבא יכול לסייע בהבנת ההבדל שבין משתנים מקומיים לגלובאליים.
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.
אהבתם? לא אהבתם? דרגו!
0 הצבעות, ממוצע 0 מתוך 5 כוכבים
המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.
למרות האמור לעיל, ומתוך רצון טוב, אם נתקלת בקשיים ביישום הקוד באתר מפאת מה שנראה לך כשגיאה או כחוסר עקביות נא להשאיר תגובה עם פירוט הבעיה באזור התגובות בתחתית המדריכים. זה יכול לעזור למשתמשים אחרים שנתקלו באותה בעיה ואם אני רואה שהבעיה עקרונית אני עשוי לערוך התאמה במדריך או להסיר אותו כדי להימנע מהטעיית הציבור.
שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.
המשתמש באתר צריך להיות מודע לכך שאם וכאשר הוא מפתח קוד בשביל פרויקט הוא חייב לשים לב ולהשתמש בסביבת הפיתוח המתאימה ביותר, הבטוחה ביותר, היעילה ביותר וכמובן שהוא צריך לבדוק את הקוד בהיבטים של יעילות ואבטחה. מי אמר שלהיות מפתח זו עבודה קלה ?
השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.