function slashEscape(strVar){
var retVal = strVar;
retVal = retVal.replace(/\\/g,"\\\\");
return retVal;
}
我使用该函数来转义某个字符串中的斜杠。但结果不对。
var str = slashEscape("\t \n \s");
这将导致" s"而不是" \ t \ n \ s"
答案 0 :(得分:4)
当字符串常量"\t \n \s"
实例化到JavaScript字符串时,它会将\t
转换为制表符,将\n
转换为新行,并且\s
到s
。
这就是为什么你不能用\
替换\\
的原因,因为就JavaScript而言,没有\
个字符。只有标签字符,新行和s
。
顺便说一下,slashEscape("\t \n \s");
的结果是不是 "s"
。
实际上是:
"
s"
第一行中的选项卡是新行,然后是s。
答案 1 :(得分:0)
要添加Mark Gabriel已经说过的内容,它是解析器,而不是任何运行时代码,它可以转换字符串中的转义序列。当字符串传递给您的函数时,解析器已经删除了反斜杠 - 它们不存在。