javascript是否有文字字符串?

Dev*_*ris 51 javascript c# string string-literals

在c#和ruby以及许多其他语言中,您可以表示不需要转义的字符串.
在c#中它是这样的

string s = @"\whatever\this\is";
Run Code Online (Sandbox Code Playgroud)

打印时的结果

\whatever\this\is
Run Code Online (Sandbox Code Playgroud)

我的问题是,这是否支持任何形式的JavaScript?

Pet*_*ley 139

简答:不

答案很长:Noooooooooooooooooooooooooo

  • 答案很长就是'Noooooooooooooooooooooooooo'. (28认同)
  • @Skilldrick - 不是那个更长的答案! (6认同)
  • 我已经恢复了最近完全改变了这个答案的编辑,声称模板文字可以用作文字字符串.由于一系列原因:(1)以这种方式从根本上改变答案是误导性的,(2)已经有另一个答案(由Iain Reid在下面提出)提出模板文字,(3)在另一个答案上评论,模板文字是*不是*文字字符串; 例如,你不能把一个包含`\ useless`或`$ {what is this}的字符串放在其中一个字符串中. (2认同)
  • 绝对没有理由修改这个答案 - "它出现在搜索引擎中"并不合理. (2认同)

Poi*_*nty 21

我不知道你得到了什么,但解决逃避(等)问题的一种方法是使用John Resig似乎很喜欢的技巧.您<script>在页面中包含块,但为它们提供"类型",如"text/plain",以确保浏览器不会将它们交给Javascript.然后使用脚本块的文本,无论你喜欢什么.

<script id='a_string' type='text/plain'>
  Here is some stuff.
  There might be some \escape sequences in it.
</script>
Run Code Online (Sandbox Code Playgroud)

然后你可以使用$('#a_string').text()(或者getElementById如果你没有使用jQuery或类似的东西).

编辑:这是John Resig关于为什么把东西放到这样的脚本块中的解释是个好主意:

小技巧:在你的页面中嵌入脚本,有一个未知的内容类型(是这样的情况在这里 - 在浏览器不知道如何执行text/html的脚本)简单地通过浏览器忽略 - 通过搜索引擎和屏幕阅读器.这是一个完美的隐形设备,可以将模板隐藏到您的页面中.我喜欢将这种技术用于快速和肮脏的情况,我只需要在页面上使用一两个模板,并且想要一些轻快的东西.

摘自本页:http://ejohn.org/blog/javascript-micro-templating/

  • 与使用CSS隐藏在视图中的其他随机DOM元素相比,这有什么好处?它似乎打破了脚本元素的语义. (4认同)
  • 我认为这比使用隐藏的<div>来完成任务更好,因为你可以更加粗心地使用"<"和">".如果模板只是一个有效的HTML,那么请确保您可以使用<div>将其括起来.但是,如果模板是用一些模板语言(把手,下划线等)编写的,它支持条件表达式(if,try,catch)和循环(for,for,foreach,map,...),你可以快速结束字符串blob没有平衡的开始和结束标记,违反了嵌套规则,具有未完成的属性等. (2认同)

Iai*_*eid 8

文字字符串可通过使用ES6语言功能获得。Node.js v4.x 现在支持这些以及大约 90% 的其他 ES6 添加。

模板文字(模板字符串)

在 JavaScript 中,字符串文字被称为模板字符串。语法非常简单。

  • 文字字符串和模板字符串实际上并不是一回事。文字字符串根本没有具有特殊含义的字符。模板字符串将 ${ 视为特殊序列。 (2认同)
  • 我认为实际上 [`String.raw()` 方法](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/raw)(这是模板的一部分文字)是最接近模板字符串的方法。 (2认同)