在C#中,你可以使用这样的逐字字符串:
@"\\server\share\file.txt"
JavaScript中有类似的东西吗?
模板字符串确实支持换行符.
`so you can do this if you want`
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
它当然不会阻止文本中的扩展,并且通过扩展,代码执行,但这可能是一件好事吗?
注意:我认为没有办法获取现有字符串并通过表达式插值运行它.这使得无法以这种方式注入代码,因为代码必须源自源代码.我不知道可以按需进行表达式插值的API.
注2:模板字符串是ES2015/ES6功能.支持每个浏览器,除了(等待它......)IE!但是,Edge确实支持模板字符串.
注3:模板字符串扩展转义序列,如果字符串中有一个字符串,该字符串将扩展其转义序列.
`"A\nB"`......将导致:
"A B"...这将无法使用,
JSON.parse
因为现在字符串文字中有一个新行.可能很高兴知道.
不,在JavaScript中不支持.而这种解决方法似乎很成问题,因为你现在失去了使用正斜杠的能力.
当我需要从ASP.NET后端构建警报消息或其他内容时,我自己遇到了这个问题,并将其粘贴在前端的JavaScript警报中.问题是开发人员可以在Page.Alert()方法中输入任何内容.
我做了解决这个问题的方法如下:
public void Alert(string message) { message = message.Replace("\\", "\\\\") .Replace("\r\n", "\n") .Replace("\n", "\\n") .Replace("\t", "\\t") .Replace("\"", "\\\""); // and now register my JavaScript with this safe string. }
这是一个非常老的线程,但仍然是一个解决方法:
function verbatim(fn){return fn.toString().match(/[^]*\/\*\s*([^]*)\s*\*\/\}$/)[1]}
您将使用哪个:
var myText = verbatim(function(){/*This is a multiline \a\n\0 verbatim line*/})
基本上这里发生的是js将评论确实视为逐字字符串.此外,这些与功能一起存储.所以这里发生的是我们创建一个带有一些逐字注释的函数,我们在逐字函数中提取这些注释.