-
שלום וברכה,
יצרתי קוד קטן שאמור לבצע חישוב ע"ג הדפדפן, עם ערכי ברירת מחדל 1 ו 2.
בפועל הקוד לא עובד, והתוצאה היא 12 במקום 3.
השאלה איפה הטעות
תודה רבה
מצורף הקוד:let a = prompt("First number?", 1); let b = prompt("Second number?", 2); alert(a + b);
-
@מאיר-הנאו הבעיה בקוד שקופה, ולכן הפתרון עבורה יהיה מאוד קל.
הסיבה שהקוד לא עובד היא כיוון שההנחיה שכתבת מחזירה לדפדפן את הקלט שהמשתמש מזין כמחרוזת (סטרינג), וזה בגלל המילה prompt שגורמת לדפדפן לחשוב שמדובר במחרוזת, ולא במספר, ולכן הוא מפענח את הקוד ככה:let a = "1"; let b = "2"; alert(a + b);
וכיוון שכן, כשיש לדפדפן שני מחרוזות שמכילות מספר הוא מחבר את שני המספרים יחד, ונותן תוצאה שגויה של 12.
למעשה מה שאתה צריך לעשות זה להמיר את המחרוזת למספר (אתה יכול לעשות את זה במשתנה עצמו, ואתה יכול לעשות את זה בחלונית שקופצת).
המרת מחרוזת למספר נעשית בצורה פשוטה עם + (Unary plus) לפני המחרוזת, אם אכן תוסיף + לפני המחרוזת, תקבל משהו כזה שאמור לעבוד:let a = +prompt("First number?", 1); let b = +prompt("Second number?", 2); alert(a + b);
-
@יושב-אוהלים אמר בעזרה בקוד js:
כיוון שההנחיה שכתבת מחזירה לדפדפן את הקלט שהמשתמש מזין כמחרוזת טקסט, וזה בגלל הסימון "" שגורם לדפדפן לחשוב שמדובר במחרוזת טקסט ולא באופרטור
ליתר דיוק בגלל ש
prompt
מחזיר תמיד סטרינג.
אגב לא הכרתי את השימוש בUnary plus להמרת סטרינג למספר, תמיד השתמשתי בparseInt
עריכה: נראה שיש יתרונות לכאן ולכאן - לדוגמה צורת הטיפול במספר עשרוני (יש בקישור הנ"ל טבלה מקיפה) :
-
@מאיר-הנאו ()Math.round
חיפוש גוגל פשוט באנגלית היה מביא לך את התשובה בקלות רבה... (אפשר להיעזר בגוגל טרנסלייט) -