node.js - א - משתנים.

  • פותח הנושא mat
  • פורסם בתאריך

שמח לעזור

משתמש מקצוען
D I G I T A L
אבל KingYes אתה מדבר רק על הספגטי, אני מדבר גם על מוסכמות, למשל שם פונקציה אותיות גדולות/קטנות קאמל קייס /פסקל וכמובן_... ובזה PHP לא כ"כ יותר טובה :(:mad::confused:
 

eliezer

מהנדס בינה מלאכותית
מנוי פרימיום
בוגר/תלמיד פרוג
עיצוב גרפי
עימוד ספרים
הנדסת תוכנה
D I G I T A L
נכתב ע"י trew;1608023:
תתכנת לאינדיזיין או PS
עד כמה שאני זוכר זה JS (שאל את אביחיל ליותר פרטים)

לאינדזיין ( ובעצם לכל תוכנות הקריאטיב סט) אפשר לתכנת בכמה דרכים:
סקריפטים לכל מערכות ההפעלה בjs
לווינדוס בלבד בvba או איזה גרסה שלvbScript לא מבין בזה.
ולמאקינטוש בלבד בשפת סקריפטים של אפל כמדומני שמה אפל סקריפט.

חוץ מזה ניתן לכתוב פלאג אינים בc++
 

אהרן2

משתמש מקצוען
עימוד ספרים
נכתב ע"י KingYes;1600677:
תלמד JavaScript רגיל. זה לא קשה

נכתב ע"י שמח לעזור;1608653:
בקשר לJS. זה השפה הקשה ביותר ללימוד לדעתי. הרבה יותר מC++

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

אבל אני אוהב שיותר מבשפות אחרות, זה פותח את הראש
לדוגמא
קוד:
FONCTION F()
כשאתה רואה שניתן לאכסן את הפונקציה בצורות שונות
קוד:
F = FUNCTION()
אתה מתחיל לחשוב מה משמעותו של F איך המאגר ומנסה להבין באלו צורות אפשר לממש אותו.

אולי אני מדבר שטויות כי חסר לי המון ידע
 

KingYes

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

וברור מה ש"שמח לעזור" אמר הוא נכון.
 

Nahum

משתמש צעיר
D I G I T A L
אין ספק שהגמישות של JS פותחת את הראש.

לגבי הדוגמה הספציפית שהבאת, דווקא יש הבדל - במקרה שאתה קורא לפונקציה לפני שהגדרת אותה (בסדר הכתיבה בקוד):
אם הגדרת אותה כפונקציה, הוא יקרא לה והכל בסדר, אבל אם הגדרת אותה כמשתנה, אתה תקבל שגיאה.

(הסבר: פונקציות נקראות על ידי המנוע של JS בזמן הקימפול לעומת משתנים שנקראים בזמן הריצה)
 

אהרן2

משתמש מקצוען
עימוד ספרים
נכתב ע"י Nahum;1626763:
אין ספק שהגמישות של JS פותחת את הראש.
לגבי הדוגמה הספציפית שהבאת, דווקא יש הבדל

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

אני לא שם כמובן, אבל מתחיל להבין את הכיוון.

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

שמח לעזור

משתמש מקצוען
D I G I T A L
נכתב ע"י Nahum;1626763:
אין ספק שהגמישות של JS פותחת את הראש.

לגבי הדוגמה הספציפית שהבאת, דווקא יש הבדל - במקרה שאתה קורא לפונקציה לפני שהגדרת אותה (בסדר הכתיבה בקוד):
אם הגדרת אותה כפונקציה, הוא יקרא לה והכל בסדר, אבל אם הגדרת אותה כמשתנה, אתה תקבל שגיאה.

(הסבר: פונקציות נקראות על ידי המנוע של JS בזמן הקימפול לעומת משתנים שנקראים בזמן הריצה)


זה מאוד טריקי להציג שזה אותו דבר פונקציות עם שם לפונקציות ללא שם. כי פונקציות עם שם הם לא רק השם שלהם לקריאה אליהם (שזה רק בסקופ בה הפונקציה נכתבה, וזה נכון רק כשהפונקציה נכתבה ב"אויר" ללא הכנסה למשתנה) אלא זה פשוט השם שלהם באמת (למאי נ"מ? אין לי מושג. אבל לפחות כלפי הסקופ הפנימי שלהם, למקרה ועושים רקורסיה זה מאוד חשוב שזה שם אחר), דוגמה:
PHP:
var x = function y() {};
> x()
undefined
> y()
VM2317:2 Uncaught ReferenceError: y is not defined(anonymous function)...
> x.name
"y"

ולשרופי הJS הנה חידון נחמד בנושא: https://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/
 

אהרן2

משתמש מקצוען
עימוד ספרים
נכתב ע"י Nahum;1626763:
לגבי הדוגמה הספציפית שהבאת, דווקא יש הבדל - במקרה שאתה קורא לפונקציה לפני שהגדרת אותה (בסדר הכתיבה בקוד):
אם הגדרת אותה כפונקציה, הוא יקרא לה והכל בסדר, אבל אם הגדרת אותה כמשתנה, אתה תקבל שגיאה.

(הסבר: פונקציות נקראות על ידי המנוע של JS בזמן הקימפול לעומת משתנים שנקראים בזמן הריצה)

איך איך הדוגמא הזאת כן עובדת?

קוד:
var x = function y() {};
x()
 

Nahum

משתמש צעיר
D I G I T A L
נכתב ע"י אהרן2;1628481:
איך איך הדוגמא הזאת כן עובדת?

קוד:
var x = function y() {};
x()

למה שלא תעבוד? הגדרת משתנה ואז קראת לו, זה בסדר גמור.

ככה זה לא יעבוד לך:
קוד:
x()
var x = function y(){}

לעומת זה, במקרה הזה זה כן יעבוד:
קוד:
x()
function x(){}
 

mat

------- Magicode -------
מה שיש לי להגיב על מה שאמרו פה.

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

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

ולדעתי זה השפה הכי טובה בעולם. :)
 

שמח לעזור

משתמש מקצוען
D I G I T A L
MAT מרוב שאתה מכיר את השפה, אתה כבר לא מודע וכואב לחסרונותיה. זה כמו משהו שנוסע כבר עשר שנים עם הגה בעל נטיה שמאלה. הוא יטען שבמכונית אחרת כל הזמן יוצא לו ימינה :)

בא תשמעו שאלה פשוטה בראיון עבודה.
ב99.99% משפות התכנות קיים התחביר הזה:
if expression command
ובכן שאלה פשוטה: מתי הcommand יתבצע? תשובה בסיסית: כשהexpression שווה חיובי.
השאלה מה זה חיובי... אז בC המורה שלנו הסביר שבC הכל בעצם זה מספרים. והif מתייחס לחיובי לכל דבר שאיננו אפס. וביטוי שתוצאתו אמת זה בעצם אחד. כלומר true + true = 2. זה הגיוני מאוד בשפה כמו C שהשפה משקפת את פעולות המחשב יותר משהיא עשוייה למטב את פרודוקטביות הכתיבה והקריאה.
בשפות עליות כמוVB JAVA או C#, החיים הגיוניים ופשוטים בהרבה. התשובה הבסיסית היא גם המדוייקת. הcommand יעשה אם הexpression חיובי.
אבל בPHP ובJS, אף שהם שפות סופר עיליות (יותר מJAVA וC#) מאפס הגיון, הלכו בדרכה של C.
אז בJS למשל, התשובה היא המדוייקת היא ככה: הcoomand יתבצע אם הexpression איננו אחד מהערכים הבאים:
undefined, null, false, '', 0, NaN

זה כמובן גורר הרבה באגים ושגיאות תכנות מפורסמות יותר ופחות. כמו השווה הבודד במקום הכפול בתנאי.

אפרופו:
MAT הביא פעם את התחביר השימושי של הII בJS:
קוד:
var result = errorMes || 'successed!';

אתמול למדתי שגם ה&& עובד על אותו פרנציפ:
קוד:
var result = errorMes && 'has error: ' + errorMes;
ויותר טריקי:
קוד:
expression && console.log('exprssion is true!');
זה שקול לif expresssion.
 

אהרן2

משתמש מקצוען
עימוד ספרים
קוד:
var result = errorMes && 'has error: ' + errorMes;
לא יכתוב את השגיאה פעמיים?
 

שמח לעזור

משתמש מקצוען
D I G I T A L
נכתב ע"י אהרן2;1633385:
לא יכתוב את השגיאה פעמיים?

אתה רואה, זה לא מה שנראה בהסתכלות ראשונה.
זה בודק עם הביטוי הראשון מחזיר חיובי (כלומר לא 0 ריק וכו'), ואם כן, מחזיר/מבצע את הביטוי השני....
קוד:
var a = 'c# is the best programmming language';
console.log(a && 'the a field is not empty');
זה מחזיר רק את המחרוזת: the a field is not empty.
 

אהרן2

משתמש מקצוען
עימוד ספרים
זה בגלל סיבה אחרת
אין סיכוי שJS יחזיר את המחרוזת
c# is the best programmming language
 

שמח לעזור

משתמש מקצוען
D I G I T A L
חידות נוספות לJS:
מה הפלט של המשפט הבא:
קוד:
0 + false + ''
סיבה: (קודם מתבצע ה+ הראשון בפני עצמו וזה בודאי מחזיר 0 כביטוי נומרי. רק אחרי כן מתבצע שוב שרשור לסטרינג. משא"כ בסדר אחר ודו"ק). אבל זה סצם חידה, לא קשור לחסרונות של JS...

אבל מאותה הסיבה שהאופרטורים משנים את הסוג לפי העניין, בקשר לרשימת הflase יש גם את הנחמדות של הסטרינג שמכיל 0. כאשר משווים אותו, הוא עובר המרה לbool. זה כבר לא כמו C... אז הנה ההגיון המפורסם שאם א = ב, וב= ג, אז: א = ג.
PHP:
if('0') console.log('true');
if(true != '0') console.log('false');
if(false == '0') console.log('false');
ובכן, אומר הJS: רבותיי כולכם צודקים! יודפס:
true
false
false.
וזה עוד כלום, המכה בפטיש הוא:
PHP:
if(false || '0') console.log('js is very smart');
זה ידפיס... נכון מעניין?
הכשל הלוגי הוא אצל מי שלא מכיר היטב את השפה :)
 

אולי מעניין אותך גם...

הפרק היומי

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


תהילים פרק קנ

א הַלְלוּיָהּ הַלְלוּ אֵל בְּקָדְשׁוֹ הַלְלוּהוּ בִּרְקִיעַ עֻזּוֹ:ב הַלְלוּהוּ בִגְבוּרֹתָיו הַלְלוּהוּ כְּרֹב גֻּדְלוֹ:ג הַלְלוּהוּ בְּתֵקַע שׁוֹפָר הַלְלוּהוּ בְּנֵבֶל וְכִנּוֹר:ד הַלְלוּהוּ בְתֹף וּמָחוֹל הַלְלוּהוּ בְּמִנִּים וְעוּגָב:ה הַלְלוּהוּ בְצִלְצְלֵי שָׁמַע הַלְלוּהוּ בְּצִלְצְלֵי תְרוּעָה:ו כֹּל הַנְּשָׁמָה תְּהַלֵּל יָהּ הַלְלוּיָהּ:
נקרא  30  פעמים

ספירת העומר

לוח מודעות

למעלה