Подтвердить что ты не робот

Имеет ли javascript буквальные строки?

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

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

результаты при печати

\whatever\this\is

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

<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: Здесь объясняется объяснение Джона Ресига о том, почему падение в блоках script - это хорошая идея:

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

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

Ответ 3

Просто избегайте экранов

var myCrazyString = "\\yes\\we\\have\\no\\bananas"

Ответ 4

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

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

В строковых литералах JS известны как Template Strings. И синтаксис довольно прямолинейный.

Ответ 5

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

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

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

Ответ 6

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

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

console.log(str);