renovations
This commit is contained in:
parent
6444024a9d
commit
fad6615c42
22 changed files with 94 additions and 161 deletions
|
@ -201,6 +201,8 @@ alert( mul(a, b) ); // 6
|
|||
|
||||
В браузерах IE7- не было методов `JSON.stringify` и `JSON.parse`, поэтому работа с JSON происходила через `eval`.
|
||||
|
||||
Этот способ работы с JSON давно устарел, но его можно встретить кое-где в старом коде, так что для примера рассмотрим его.
|
||||
|
||||
Вызов `eval(code)` выполняет код и, если это выражение, то возвращает его значение, поэтому можно в качестве кода передать JSON.
|
||||
|
||||
Например:
|
||||
|
@ -248,8 +250,6 @@ alert( user.age ); // 25
|
|||
**Поэтому рекомендуется, всё же, использовать `JSON.parse`.**
|
||||
|
||||
При разборе через `JSON.parse` некорректный JSON просто приведёт к ошибке, а вот при разборе через `eval` этот код реально выполнится, он может вывести что-то на странице, перенаправить посетителя куда-то и т.п.
|
||||
|
||||
Если вам важна поддержка IE7, в котором `JSON.parse нет`, то от злого кода можно защититься проверкой текста при помощи регулярного выражения из [стандарта RFC 4627, секция 6](https://www.ietf.org/rfc/rfc4627.txt) или подключить библиотеку [json2](https://github.com/douglascrockford/JSON-js/blob/master/json2.js).
|
||||
[/warn]
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue