Есть ли в JavaScript буквальные строки? - PullRequest
48 голосов
/ 31 марта 2010

В c # и ruby, а также во многих других языках вы можете обозначать строку как не нуждающуюся в экранировании.
в c # это так

string s = @"\whatever\this\is";

результаты отображаются при печати

\whatever\this\is

мой вопрос, это поддерживается в любой форме в javascript?

Ответы [ 6 ]

133 голосов
/ 31 марта 2010

Краткий ответ: Нет

Длинный ответ: Нееееееееееееееееет

21 голосов
/ 31 марта 2010

Я не знаю, к чему вы клоните, но один из способов избежать проблемы побега (и т. Д.) - использовать трюк, который Джон Резиг, похоже, очень любит. Вы включаете <script> блоки на странице, но присваиваете им «тип», такой как «text / plain», чтобы браузер не передавал их в Javascript. Затем используйте текст блока скрипта для чего угодно.

<script id='a_string' type='text/plain'>
  Here is some stuff.
  There might be some \escape sequences in it.
</script>

Затем вы можете получить это с помощью $('#a_string').text() (или getElementById, если вы не используете jQuery или что-то подобное).

edit: Вот объяснение Джона Резига о том, почему выбрасывать подобные вещи в блоки скриптов - хорошая идея:

Подсказка: встраивание в вашу страницу скриптов с неизвестным типом контента (так обстоит дело здесь - браузер не знает, как выполнить скрипт text / html) просто игнорируется браузером - и поиском двигатели и скринридеры. Это идеальное устройство для маскировки шаблонов на вашей странице. Мне нравится использовать эту технику для быстрых и грязных случаев, когда мне просто нужен маленький шаблон или два на странице и я хочу что-то легкое и быстрое.

Взято с этой страницы: http://ejohn.org/blog/javascript-micro-templating/

2 голосов
/ 27 октября 2015

Буквальные строки доступны благодаря использованию языковых функций ES6. Node v4.x теперь поддерживает эти и около 90% других дополнений ES6.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings

В JS строковые литералы известны как строки шаблонов. И синтаксис довольно прост.

2 голосов
/ 31 марта 2010

Просто убеги от побегов

var myCrazyString = "\\yes\\we\\have\\no\\bananas"
1 голос
/ 22 августа 2016

Это будет работать до тех пор, пока вы не добавите \x в строку!

var str = String.raw`\whatever\this\is`;

console.log(str);
1 голос
/ 08 апреля 2016

Я знаю, что сейчас уже шесть лет, но у меня есть одно решение;)

function literalString(regex) {
    return ('' + regex).slice(1, -1);
};

O.innerHTML = literalString(/\whatever\this\is/);
<pre id=O>

Вы в основном конвертируете регулярное выражение в строку и удаляете первый и последний символы.

...