Итак, я возился с функцией eval и работал над небольшим проектом чата, используя подсказку. Если я сделаю:
var test = 'prompt("Username: Jimbles \n Message:")'
eval(test)
Я получаю следующую ошибку:
Uncaught SyntaxError: Invalid or unexpected token
Это связано с тем, что при вычислении она помещает новую строку в саму строку, а не в приглашение.
Вот что видит JavaScript:
'prompt("Username: Jimbles
Message:")'
Мне нужно использовать eval, поскольку я получаю код для выполнения с сервера и мне нужен способ его выполнения. Как я могу успешно использовать новую строку в eval, не получая этой ошибки и не помещая новую строку в саму строку eval? Я хочу, чтобы в приглашении была новая строка, но не оцениваемая строка. Спасибо!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Поскольку вы хотите, чтобы test буквально содержал \n, вам нужно избегать обратной косой черты.
Т.е.:
var test = 'prompt("Username: Jimbles \\n Message:")'
eval(test)
@Gorgamite Escape-символы говорят программе, что следующий символ означает что-то особенное. Например, \n означает новую строку \t означает табуляцию и т. д. Поэтому, если вы действительно хотите использовать обратную косую черту в своей строке, вам нужно использовать \\.
я понимаю. Таким образом, вы в основном говорите eval буквально принимать "\ n" как часть строки. Спасибо!
Спасибо, отлично работает! Но что именно «убегает»? Для меня это немного похоже на regEx