Przejdź do głównej zawartości

Bug #087

🪲 Znajdź buga

console.log(037 - 027)

Jaki wynik działania zostanie zalogowany do konsoli?

🧪 Rozwiązanie

console.log(037 - 027) // 8
console.log(0o37 - 0o27) // 8

Działanie 037 - 027 w trybie nieścisłym zwróci wynik 8.

Tryb nieścisły pozwala na interpretację liczba zaczynających się zerem jako liczb oktalnych (ósemkowych).

037 w systemie ósemkowym to 31 w systemie dziesiętnym.

027 w systemie ósemkowym to 23 w systemie dziesiętnym.

31 - 23 daje wynik 8.

Aby zablokować interpretację liczb oktalnych poprzez sam prefiks 0, musimy uaktywnić tryb ścisły.

Można to zrobić np. poprzez deklarację "use strict".

Tryb ścisły automatycznie uaktywnia się też w modułach JavaScript w momencie gdy w kodzie pojawia się import lub export.

W trybie ścisłym zapis oktalny wymaga bardziej wyraźnego prefiksu 0o, a nie tylko samego 0.

🎢 Plac zabaw

Otwórz edytor w nowym oknie

📑 Linki

❤️ Podobają Ci się bugi JS?

Podziel się linkiem ze znajomymi:
https://codisity.pl/100-bugow-js