Code Lab е в разработка. Постепенно добавяме нови уроци и подобрения. Прогресът може да бъде изтрит.
Зареждане…
Code Lab е в разработка. Постепенно добавяме нови уроци и подобрения. Прогресът може да бъде изтрит.
Зареждане…
Code Lab е в разработка. Постепенно добавяме нови уроци и подобрения. Прогресът може да бъде изтрит.
JAVASCRIPT STORAGE / CHAPTER 06 / Учене / LESSON 05
Теория. Валиден JSON не е същото като правилни данни. Текстът {"title":"Rent","amount":"500"} се парсира без грешка, но amount е низ, а кодът ти очаква число. [1,2] е валиден JSON, но не е запис.
Затова след parse идва втора проверка — "охрана на формата" (shape guard): типът на самата стойност, задължителните полета и типовете им.
function isExpense(value) { if (typeof value !== "object" || value === null || Array.isArray(value)) return false; if (typeof value.title !== "string") return false; return typeof value.amount === "number" && Number.isFinite(value.amount); }
Само след охраната е безопасно да ползваш value.amount. Отхвърленото показвай като "bad", приетото — като "ok".
Честа грешка: typeof null е "object"; масивът също е "object"; NaN е число; да приемеш "500" като число.
<pre id="raw-a">{"title":"Rent","amount":"500"}</pre><pre id="raw-b">{"title":"Rent","amount":500}</pre><pre id="raw-c">[1,2]</pre><p id="status-a"></p><p id="status-b"></p><p id="status-c"></p>Валиден JSON не гарантира правилна форма — провери типовете преди употреба.
(празно)Натисни Run — HTML се зарежда в sandbox iframe; Stop маха iframe-а (спира и безкраен цикъл).
›