Описание тега eval
eval
- это функция, доступная на нескольких языках программирования (включая php, ruby, python, bash, javascript и др.), которая позволяет программистам выполнять произвольный код, написанный на том же языке, из строковой переменной в коде.
Документация
Недостатки
Использование eval
Функция обычно считается плохой практикой по ряду причин:
Что наиболее важно, это может вызвать серьезные проблемы с безопасностью в любом коде, который использует
eval
. Потому какeval
будет запускать любой код на своем языке, хакер может использоватьeval
оператор для запуска собственного кода и, таким образом, компрометации системы. Чтобы минимизировать эффект, программист должен проверить синтаксис оператора, который должен быть оценен.Во-вторых, он медленный. Большинство языков, даже интерпретируемых, таких как php и javascript, имеют встроенные оптимизаторы и своевременные компиляторы для ускорения выполнения. Однако код запускается через
eval
Оператор не может быть оптимизирован, так как интерпретатор не может знать точный код, который будет запускаться, пока не станет слишком поздно для выполнения любых оптимизаций.Наконец, почти во всех случаях использование
eval
не является необходимым, так как желаемый эффект почти всегда может быть достигнут без его использования.