מרחשוון

שאלות ב-30 שניות, תחומי הגדרה, יום ללא, ועוד קישורי JavaScript

איך להתמודד עם פונקציה לא טהורה

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

במאמר הזה ג’יימס סינקלר מראה שתי דרכים להתמודד עם פונקציות לא טהורות:

  1. הזרקת תלות (Dependency injection), או כמו שהוא קורא לזה זריקת הבעיה אל מעבר לגדר. במקרה הזה, מעבירים לפונקציה את האלמנטים שבהם היא תיגע. סינקלר חושב שזה לא בדיור פותר את הבעיה, רק מגלגל את האחריות למקום אחר.
  2. יצירת אובייקט שלתוכו מכניסים את הקריאה לפונקציה הלא טהורה.

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

תחומי הגדרת משתנים

תחום הגדרת משתנים (scope) ב-JS, וההבדלים בין var, let ו-const:

עד הופעתו של ES6, השתמשנו במילת המפתח var כדי להגדיר משתנה, והיו רק שני תחומים אפשריים למשתנים ב-JavaScript: התחום הגלובלי – כלומר כל היקום ה-JavaScript-י; והתחום המקומי – תחום של פונקציה. נושא התחום טיפה מאתגר כי לא משנה איפה הגדרת את המשתנים, JavaScript יזיז אותם לאחד משני התחומים האלה. כך שגם אם הגדרנו משתנה בתוך לולאה שנמצאת בתוך פונקציה, JavaScript יתייחס למשתנה כאילו הוגדר בתחילת הפונקציה, ורק יחיל לו את הערך בתוך הלולאה שבה לכאורה הגדרנו אותה. להתנהגות הלא-יפה הזאת של JavaScript קוראים hoisting, והיא משעשעת מראיינים בזעה שהם צופים במרואיינים מנסים לפצח את ההתנהגות הזאת בקטע קוד מאתגר.

החל מ-ES6, עם הופעתן של מילות המפתח החדשות let ו-const, נהיה תחום נוסף והרבה יותר אינטואיטיבי: תחום הבלוק. עם זאת גם כאן מתרחש hoisting, רק שהוא שונה מ-hoisting שנעשה עם var.

המאמר תחומי משתנים ב-JavaScript מודרני עובר ומסביר את תחומי ההגדרה לפי מילות המפתח השונות, איך אפשר להגיע למשתנה גלובלי גם מתוך התחום הלוקלי, ומתי להשתמש בכל אחת ממילות המפתח var, let ו-const. לא ארוך ושווה קריאה.

שימוש בפונקציית filter, על סטרואידים

הנושא של פונקציות המערך של JS ממשיכים לפרנס מאמרים. הפעם פוסט ב-css tricks על עליית דרגה בפונקציית פילטר. יש כאן שימוש בפונקציות חץ חמודות, פְּרֶדִיקָטים (פונקציות שמחזירות ערך בוליאני), פונקציות מדרגה שלישית, ועוד קללות מקסימות. שווה לקרוא גם את ההערות. רציתי לכתוב שזה לא לבעלי לב חלש, אבל זה מוסבר כל כך יפה, שלדעתי אפשר הצטייד בקוצב לב ולהציץ 😉 .

30 שניות של שאלות לראיונות

30 שניות של שאלות לראיונות הוא אוסף של שאלות-ריאיון נפוצות שעוזרות להתכונן לריאיון הבא. השאלות הן בתחום הפרונט אנד וכוללות את התחומים HTML, CSS, JavaScript, React, Node.js ואבטחה. אפשר לסנן את השאלות לפי התחומים האלה, והשאלות גם מדורגות לפי דרגת קושי (קל, בינוני, קשה) כך שאפשר לסנן גם לפי זה.

יום בלי JS

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

זה מה ש-JavaScript עושה למשתנים…
התמונה מתוך Pixabay

כתבו תגובה

כתובת הדוא"ל שלכם לא תוצג.