Semicolon (;) בשפת javaScript
-
כתבתי קוד כזה:
function fun(){ return 1+1; }
במקום 1+1 היה קוד ארוך ארוך ולכן חילקתי לשתי שורות.
אולי לכם יהיה מובן מייד בגלל ההדגשה שלי על חלוקת השורות, אבל יצאתי מדעתי למה קוד שהתבסס על פונקציה זו לא עובד. כלומר נסו את הקוד וקראו לפונקציה היא תחזיר undefined.
mat גילה את אוזני שזה כאילו כתוב:function fun(){ return; 1+1; }
הוסיף mat ואמר, שלא זו בלבד שלא צריך לשים נקודה פסיק, אלא שבקהילת הJS זה נחשב מקובל ואף "חיובי", למשל בסטנדרט standardjs מופיע כלל שאומר לא לשים נקודה פסיק מלבד איפה שחייבים! זה לשונם "No semicolons – It's fine. Really!". הם מצרפים קישור לדף זה: http://inimino.org/~inimino/blog/javascript_semicolons שעושה (סוג של) סדר מתי לא צריכים לשים נקודה פסיק.
אמממ. אין לי מה להוסיף. וגם אם כן, זה כבר קשור לפורום פילוסופיה.
פורסם במקור בפורום CODE613 ב02/11/2017 20:27 (+02:00)
-
@דוד ל.ט.
הוסיף mat ואמר, שלא זו בלבד שלא צריך לשים נקודה פסיק, אלא שבקהילת הJS זה נחשב מקובל ואף "חיובי", למשל בסטנדרט standardjs מופיע כלל שאומר לא לשים נקודה פסיק מלבד איפה שחייבים! זה לשונם "No semicolons – It's fine. Really!". הם מצרפים קישור לדף זה: http://inimino.org/~inimino/blog/javascript_semicolons שעושה (סוג של) סדר מתי לא צריכים לשים נקודה פסיק.
אכן... אצלנו בעבודה לא כותבים נקודה פסיק..
זה ממש שיגע אותי בהתחלה
וגם שכותבים return בלי שום דבר נוסף..אבל מתרגלים :lol:
פורסם במקור בפורום CODE613 ב02/11/2017 21:00 (+02:00)
-
כמו שכבר נאמר - אבל רק לחדד את הדברים - שבירת שורה בJS היא לא קריטית אלא במקרה הזה - בו הוא מגיע לreturn ולא מוצא מה להמשיך בשורה ולכן הוא מפסיק. יש הנוהגים כאשר הם כותבים JSX עם return לעטוף אותו בסוגריים עגולות, ויתכן שהוא מהסיבה הזו. אני באמת לא נוהג בזה.
בC# אם לא תשים ; תקבל שגיאת קומפילציה. ובאמת בהתחלה לכתוב בלי ; היה נראה לי כל כך ברברי ולא מסודר , אבל לאט לאט מתרגלים לזה ואני פשוט לא יכול לשים בסוף - זה מוריד מהjs_looK ואגב - זה שאלה מראיונות עבודה כזה דבר.
VB על שבירת שורתיה הוא דבר ידוע - אבל רק לציון אזכיר שיש גם בC# קיצור כזה אם כותבים if או for והפעולה או ההתניה היא רק שורה אחת אפשר לוותר על הסוגריים המסולסולות שיש שם, וזה יהיה אותו דבר. אם זה יהיה שני שורות זה כבר יצא מהלולאה. ויש לזה נפק"מ גדול בC# - שהרי כל סוגריים מסולסלים יוצרים סקופ נפרד - וכאן מחמת שהוא רק קיצור כתיבה עכ"פ הוא לא יוצר סקופ נפרד -(אולי אני טועה אבל כך זכור לי) - אבל JS - אין התניות יוצרות סקופ אבל לולאה יוצרת סקופ.
אני התחלתי עם C# = וזה נהדר - ואני חושב שאסור ללמוד את הנוזל הזה שנקרא JS לפני שיש איזה שפה אמיתית בראש. זה כמו להתחיל לדבר ישר בסלנג. אבל היום - אני מרגיש די בבית - מתרגלים לדרך שדברים נעשים שם.
פורסם במקור בפורום CODE613 ב02/11/2017 23:12 (+02:00)
-
נתנאל יש חילוק עצום בין הגמישות בסלסול של שפות C (שסי שארפ וג'אוה צעדו אחריהם) שהם כלל (ברזל! וקליט!) בדיוק ככל הסינטקס בשפה (ובניגוד למה שסברת אין לזה שום נפק"מ, כי סקופ פנימי תמיד יש רק חוסכים לך הקלדה), לבין הגמישות בJS שא. בוגדת בשפת האם שהיא C, ב. גורמת לקוד להיראות שונה ממה שהוא יתבצע ג. קשה להגדרה. מתי זה שורה חדשה ומתי לא.
פורסם במקור בפורום CODE613 ב02/11/2017 23:34 (+02:00)
-
ויש לזה נפק"מ גדול בC# - שהרי כל סוגריים מסולסלים יוצרים סקופ נפרד - וכאן מחמת שהוא רק קיצור כתיבה עכ"פ הוא לא יוצר סקופ נפרד -(אולי אני טועה אבל כך זכור לי) - אבל JS - אין התניות יוצרות סקופ אבל לולאה יוצרת סקופ.
יש לך כאן 2 טעויות:
א. כמו שדוד כתב, בC# תמיד נוצר סקופ חדש מאחורי הקלעים.. אתה פשוט לא צריך להקליד אותו.. (כמו שביטוי למדה יוצר מאחורי הקלעים פונקציה חדשה עם סקופ משלה.. זה רק חוסך הקלדה ויותר קריא (למי שמבין מה זה אומר ).ב. בJS התניות ולולאות לא יוצרות סקופ חדש - רק פונקציה יוצרת סקופ.
לכן, אם אתה כותב לולאת for וכדומה אתה בתוך אותו סקופ. אבל אם אתה משתמש בפונקציה forEach() אז באמת אתה בתוך סקופ חדש, כיון שזה בעצם פונקציה חדשה שרצה בלולאה על המערך, וכל פונקציה יש לה את הסקופ הפנימי שלה.פורסם במקור בפורום CODE613 ב03/11/2017 09:27 (+02:00)
-
https://stackoverflow.com/questions/3641519/why-does-a-results-vary-based-on-curly-brace-placement
פורסם במקור בפורום CODE613 ב03/11/2017 15:20 (+02:00)