Bug #051
🪲 Znajdź buga
const string = "code"
const stringified = JSON.stringify("code")
console.log(string === stringified)
Czy porównanie zaloguje do konsoli prawdę, czy fałsz?
🧪 Rozwiązanie
const string = '"code"'
const stringified = JSON.stringify("code")
console.log(string === stringified)
W przykładzie z błędem zostanie zalogowana wartość false.
JSON.stringify() zwraca ciąg znaków w formacie JSON (skrót od JavaScript Object Notation).
Możliwość odwrócenia tego procesu zapewnia JSON.parse().
Format JSON jest ciągiem znaków, więc wszelkie wartości z JavaScript muszą być zaprezentowane jako ciąg znaków.
Jak więc w JSON odróżnić np. ciąg znaków od wartości liczbowej, albo logicznej?
Ciąg znaków prezentowany jest w podwójnym cudzysłowie, podczas gdy inne wartości prymitywne, bez.
Do stałej stringified przypisany zostaje więc ciąg znaków "code".
Chcą przypisać taką wartość ręcznie, musielibyśmy użyć \ dla uniknięcia wewnętrznych cudzysłowów, definiując to jako "\"code\"", lub nieco prościej, używając pojedynczego cudzysłowu '"code"'.
🎢 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