שני סוגי הערות
ל-JavaScript יש שני תחבירים להערות. הערת שורה מתחילה ב-// ונמשכת עד סוף השורה:
הערת בלוק מתחילה ב-/* ונגמרת ב-*/ הבא. היא יכולה להשתרע על כמה שורות שתרצו:
מנוע ה-JavaScript מתעלם לגמרי משתי הצורות. הן קיימות בשביל בני אדם: בשבילכם, בשביל חברי הצוות, ובשבילכם בעתיד, כשתקראו את הקוד הזה בעוד חצי שנה.
הערות שורה
// היא זו שתשתמשו בה הכי הרבה. כל מה שבאותה שורה אחרי // הוא הערה; השורה הבאה חוזרת להיות קוד:
הערות בסוף שורה (אחרי פקודה) בסדר להערות קצרות. אם ההערה מתארכת עד שהיא נשברת לשורה נוספת, העבירו אותה לשורה משלה מעל הקוד: הערות ארוכות בסוף שורה נחתכות בעורכים והקוראים מתעלמים מהן.
הערות בלוק
כדאי לבחור ב-/* */ בשני מקרים: הערה שצריכה יותר משורה אחת, והערה שיושבת באמצע ביטוי.
מלכודת אחת: הערות בלוק לא מקוננות. ה-*/ הראשון סוגר את ההערה, גם אם חשבתם שאתם עדיין בתוך הערה חיצונית:
/* outer /* inner */ still outer */
// SyntaxError - the first */ closed the block,
// and "still outer */" is now invalid code.
אם צריך להשבית בהערה קוד שכבר מכיל /* */, השתמשו ב-// בכל שורה במקום.
השבתת קוד בהערה
תוך כדי דיבוג תרצו לא פעם להשבית זמנית כמה שורות. שתי צורות ההערה עובדות:
לכל עורך יש קיצור לזה, Ctrl+/ ב-Windows/Linux ו-Cmd+/ ב-Mac, שמפעיל ומכבה // בשורות שנבחרו. למדו אותו פעם אחת; תשתמשו בו כל יום.
קוד בהערה אמור להיות זמני. אל תעשו commit לבתי קברות של קוד מת עם // old version, keep just in case מעליהם. ניהול הגרסאות זוכר את הקוד הישן בשבילכם. מחקו אותו.
הסבירו את ה"למה", לא את ה"מה"
זה הכלל היחיד שמפריד בין הערות שימושיות לרעש. הקוד כבר מראה מה הוא עושה. הערה טובה מסבירה למה.
רעש:
ההערות האלה לא אומרות לקורא שום דבר שהקוד לא אמר כבר. השוו:
שתי ההערות מתייחסות למשהו שקורא לא היה יכול להבין מהקוד לבדו: אילוץ חיצוני, התנהגות משונה מתועדת. זה הרף. אם הסרת ההערה לא הייתה מבלבלת אף אחד, ההערה לא הצדיקה את קיומה.
JSDoc: הערות שכלים קוראים
JSDoc היא מוסכמה לכתיבת הערות בלוק שמתארות פונקציות בצורה מובנית. עורכים ובודקי טיפוסים קוראים אותן ונותנים לכם השלמה אוטומטית ותיעוד בריחוף טובים יותר:
הפתיחה /** (שתי כוכביות) היא מה שמסמן את ההערה כ-JSDoc ולא כהערת בלוק רגילה. לא צריך JSDoc על כל פונקציה: הוא משתלם בעיקר ב-APIs ציבוריים, בפונקציות עזר משותפות ובכל מקום שבו הטיפוסים לא ברורים כבר מהקוד.
כמה הרגלים ששווה לשמור
- שמרו הערות קרוב לקוד שהן מתארות. הערה שנמצאת עשר שורות מעל השורה הרלוונטית נוטה לצאת מסנכרון כשהקוד משתנה.
- עדכנו הערות כשאתם משנים את הקוד. הערה מיושנת גרועה מאין הערה: היא ממש משקרת לקורא הבא.
- העדיפו שמות טובים יותר על פני יותר הערות.
const d = 86400000;צריך הערה.const MILLISECONDS_PER_DAY = 86_400_000;לא. - סמנו בעיות זמניות עם
TODO:אוFIXME:. רוב העורכים מדגישים אותן, וקל לחפש אותן אחר כך עם grep.
הערה על הערות HTML מול הערות JavaScript
אם אתם כותבים JavaScript בתוך קובץ HTML, אל תבלבלו בין שני סגנונות ההערה. HTML משתמש ב-<!-- -->; JavaScript משתמשת ב-// וב-/* */. בתוך תגית <script> רק הצורות של JavaScript עובדות:
<script>
// נכון: הערת JS בתוך <script>
/* גם נכון */
<!-- שגוי: זו הערת HTML והיא תשבור את ה-JS שלכם -->
console.log("hi");
</script>
דפדפנים סבלו היסטורית <!-- --> בתוך סקריפטים מסיבות שקשורות לדפדפנים עתיקים, אבל התייחסו לזה כשבור והמשיכו הלאה.
הבא בתור: הצהרה על משתנים
עכשיו כשאתם יודעים להעיר על קוד, הגיע הזמן לכתוב קצת. ל-JavaScript יש שלוש דרכים להצהיר על משתנה, let, const ו-var, ובחירת הנכונה היא ההחלטה האמיתית הראשונה שתקבלו בכל שורה. זה הבא בתור.
שאלות נפוצות
איך כותבים הערה ב-JavaScript?
השתמשו ב-// להערה של שורה אחת: כל מה שאחריו באותה שורה לא נלקח בחשבון. השתמשו ב-/* ... */ להערת בלוק שיכולה להשתרע על כמה שורות. שתיהן עובדות בכל מקום בקובץ .js ובתגיות <script> בתוך HTML.
מה ההבדל בין // ל-/* */ ב-JavaScript?
// נמשכת עד סוף השורה הנוכחית ונעצרת. /* */ מתחילה ב-/* ונגמרת ב-*/ הבא, כך שהיא יכולה לעטוף כמה שורות או לשבת באמצע ביטוי. השתמשו ב-// להערות קצרות, וב-/* */ כשצריך יותר משורה אחת או כשרוצים להעיר על חלק מביטוי.
איך משביתים בלוק קוד בהערה ב-JavaScript?
עטפו אותו ב-/* */, או הוסיפו // בתחילת כל שורה. לרוב העורכים יש קיצור מקשים: Ctrl+/ (או Cmd+/ ב-Mac) מפעיל ומכבה הערות // בשורות שנבחרו. הימנעו מקינון של /* */ בתוך /* */ אחר: ה-*/ הראשון סוגר את ההערה החיצונית ותקבלו שגיאת תחביר.
מתי כדאי לכתוב הערה?
הסבירו את ה_למה_, לא את ה_מה_. אם הקוד עושה משהו לא מובן מאליו, מעקף, כלל עסקי, טריק ביצועים, הסבירו למה. אל תספרו במילים את מה שהקוד כבר אומר. משתנה או פונקציה עם שם טוב מייתרים את רוב ההערות.