Разница между eval () и eval`` (с обратными галочками) - PullRequest
0 голосов
/ 14 марта 2020

Итак, я натолкнулся на любопытный вопрос: я нигде не могу найти его ответ, и нет большого количества документации о том, что делает eval, когда вы передаете ему строковые литералы.

Если я сделаю eval("alert(1)"), я получу окно предупреждения с 1, однако, когда я сделаю eval`alert(1)`, я просто получу массив с "alert (1)", я не уверен, откуда это исходит Разве это не должно рассматриваться так же, как в предыдущем примере?

Кроме того, eval`${1}` возвращает массив с двумя пустыми элементами, почему?

1 Ответ

0 голосов
/ 14 марта 2020

То, с чем вы сталкиваетесь, связано с помеченными шаблонами .

По сути, вы выполняете интерполяцию строки и используете функцию, чтобы решить, как создать строку. Ожидается, что первый аргумент будет Array, который содержит все строковые части (все между объявлениями ${var}). Ожидается, что возвращение любой функции, используемой таким образом, будет строкой. Причина, по которой вы видите 2 записи, заключается в том, что эта функция возвращает необработанный формат в дополнение к тому, который она пыталась создать с помощью функции тега.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...