eval()
обычно не одобряется, потому что, как вы уже знаете, это считается небезопасным.
Однако в среде браузера это не проблема, поскольку на самом деле любой пользователь можетeval()
любой код, который они хотели, используя такие инструменты, как Firebug и т. Д.
По-прежнему существует проблема, заключающаяся в том, что встроенный в код eval()
можно запустить, не зная, что пользователь запускаетeval()
, но это все же гораздо менее серьезная проблема, чем в серверной среде, такой как PHP.
eval()
обычно используется, как вы показали, для запуска кода JSON, возвращаемого с сервера,побочный запрос.Более новые браузеры могут импортировать JSON более безопасно, используя выделенную функцию JSON parse()
, но более старые браузеры не имеют этой функции и вынуждены использовать для этого eval()
.По этой причине большинство библиотек JSON содержат в своем коде eval()
где-то, но обычно проводят некоторую очистку входных данных перед тем, как пропустить их через eval()
.