Does JavaScript have literal strings?

In C#, Ruby, and many other languages you can denote a string as to not need escaping. In C# it’s like this

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

The results are when printed:

\whatever\this\is 

Is this supported in any form in JavaScript?

1

6 Answers

Short answer: No

Long answer: Noooooooooooooooooooooooooo

3

I don't know what you're getting at, but one way to get around the problem of escaping (etc) is use a trick that John Resig seems to like a lot. You include <script> blocks in a page, but give them a "type" like "text/plain" to make sure that the browser doesn't hand them over to Javascript. Then use the text of the script block for whatever you like.

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

Then you can grab that with $('#a_string').text() (or with getElementById if you're not using jQuery or something like that).

edit: Here's John Resig's explanation about why dropping stuff into script blocks like that is a good idea:

Quick tip: Embedding scripts in your page that have a unknown content-type (such is the case here - the browser doesn't know how to execute a text/html script) are simply ignored by the browser - and by search engines and screenreaders. It's a perfect cloaking device for sneaking templates into your page. I like to use this technique for quick-and-dirty cases where I just need a little template or two on the page and want something light and fast.

Taken from this page:

5

Literal strings are available through the use of ES6 language features. Node.js v4.x now supports these and around 90% of the other ES6 additions as well.

Template literals (Template strings)

In JavaScript, string literals are known as template strings. And the syntax is pretty straightforward.

5

This will work as long as you don't throw a \x into the string!

var str = String.raw`\whatever\this\is`; console.log(str);
2

Just escape the escapes

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

I've got one solution to this ;)

function literalString(regex) { return ('' + regex).slice(1, -1); }; O.innerHTML = literalString(/\whatever\this\is/);
<pre id=O>

You basically convert a regex to a string and remove the first and last characters.

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like