`strict mode` בג'אווהסקריפט

`strict mode` בג'אווהסקריפט

מאמר זה מסביר את strict mode ב-JavaScript.

YouTube Video

strict mode בג'אווהסקריפט

ב-JavaScript, strict mode הוא מאפיין שהוצג ב-ECMAScript 5 (ES5) כדי להפוך את הקוד לבטוח יותר ולמנוע שגיאות. על ידי שימוש ב-strict mode, תחביר גמיש ומאפיינים שעלולים להיות מסוכנים מבוטלים, ואם התבצעו שגיאות, הן מזוהות באופן מחמיר יותר. זה מאפשר למפתחים להימנע מהתנהגויות בלתי צפויות ולכתוב קוד יציב ובעל ביצועים גבוהים יותר.

הפעלת strict mode

כדי להפעיל strict mode, הוסף את ההנחיה הבאה בתחילת הקוד שלך.

1"use strict";

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

1"use strict";
2
3function example() {
4    // Strict mode is applied
5}

אם זה מוחל על בסיס כל פונקציה, ניתן לכתוב זאת כך:.

1function example() {
2    "use strict";
3    // Strict mode is applied only within this function
4}

strict mode חל ברמת התחום (scope), ולכן ניתן גם להפעילו בתוך פונקציה. בנוסף, מאחר ש-strict mode מופעל כברירת מחדל במודולים, אין צורך להגדיר אותו בנפרד בתוך המודול.

תכונות מרכזיות והבדלים של strict mode

השימוש ב-strict mode משנה חלק מהתנהגויות ברירת המחדל של ג'אווהסקריפט. להלן הדוגמאות המרכזיות.

איסור על משתנים גלובליים מרומזים

בג'אווהסקריפט רגיל, השמטת הכרזת משתנה יוצרת משתנה גלובאלי באופן אוטומטי, אך ב-strict mode זה מוביל לשגיאה.

1"use strict";
2
3x = 10;  // Error: x is not defined

משתנים תמיד חייבים להיות מוצהרים באמצעות var, let או const.

מגבלה על שימוש במילים שמורות

מילות מפתח פוטנציאליות עתידיות בג'אווהסקריפט (לדוגמה: implements, interface, package, וכו') אינן יכולות לשמש כשמות של משתנים או פונקציות ב-strict mode.

1"use strict";
2
3var package = "strict mode";  // Error: Unexpected strict mode reserved word

שינויים בהתנהגות של this

במצב רגיל, this בתוך פונקציה מתייחס לאובייקט הגלובאלי (לדוגמה, window בדפדפן), אך ב-strict mode, this הוא undefined.

1"use strict";
2
3function example() {
4    console.log(this);  // undefined
5}
6
7example();

זה עוזר למנוע באגים שנגרמים משימוש לא נכון ב-this.

איסור על מחיקת תכונות שלא ניתן למחוק

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

1"use strict";
2
3var obj = Object.freeze({name: "John"});
4delete obj.name;  // Error: Cannot delete property 'name'

איסור על שמות פרמטרים כפולים

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

1"use strict";
2
3function example(a, a) {
4    // Error: Duplicate parameter name not allowed in this context
5}

איסור על שימוש בפקודת with

השימוש בפקודת with יכול להפחית את קריאות הקוד ואסור ב-strict mode.

1"use strict";
2
3with (Math) {
4    // Error: Strict mode code may not include a with statement
5}

יתרונות של strict mode

strict mode משפר את בטיחות ויעילות הקוד בכמה אופנים.

שיפור בזיהוי שגיאות

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

ביצועים משופרים

ב-strict mode, מנועי ג'אווהסקריפט יכולים לייעל את הקוד בצורה יותר יעילה. כתוצאה מכך, מהירות הביצוע עשויה להשתפר.

שיפור באבטחת הקוד

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

תאימות ושיקולים

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

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

סיום

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

הבנה ויישום נכון של strict mode מסייעים להימנע ממכשולים בג'אווהסקריפט ומאפשרים פיתוח בטוח ויעיל יותר.

תוכלו לעקוב אחר המאמר שלמעלה באמצעות Visual Studio Code בערוץ היוטיוב שלנו. נא לבדוק גם את ערוץ היוטיוב.

YouTube Video