`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 בערוץ היוטיוב שלנו. נא לבדוק גם את ערוץ היוטיוב.