Przejdź do głównej zawartości

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