שלום אורח התחבר

חידת Strict Mode ב JavaScript

נושאים:יומי

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

הקוד הבא מדפיס 9, וזה הגיוני אבל קצת מוזר:

let x = 09;
console.log(x);

מוזר כי ב Python קוד דומה זורק שגיאה:

# Error: SyntaxError: leading zeros in decimal integer literals are not permitted
x = 09
print(x)

ב Ruby הקוד זורק שגיאה:

# SyntaxError ((irb):1: Invalid octal digit)
x = 09

ב Clojure הקוד זורק שגיאה:

;; Invalid number: 09
(let [x 09] (print x))

והאמת שרק Scheme הסכימה לשתף איתי פעולה ולהדפיס את המספר 9 בדומה ל JavaScript:

(display 09)

אבל, ופה JavaScript מתחילה להיות מוזרה, נסו לחשוב מה קורה כשמחליפים את ה-9 ל-10:

let x = 010;
console.log(x);

ולחידה - מה קורה שם? למה זה קורה (רמז בהודעות השגיאה של כל השפות האחרות)? ואיך Strict Mode יכול לעזור לי להיזהר ממצבים כאלה?

מעדיפים לקרוא מהטלגרם? בקרו אותנו ב:@tocodeil

או הזינו את כתובת המייל וקבלו את הפוסט היומי בכל בוקר אליכם לתיבה:


נהניתם מהפוסט? מוזמנים לשתף ולהגיב