Bobscript

JS何时用\转义字符?

JS何时用\转义字符?

有这样一种情景:

使用nodejs读取一个文件,假设这个文件只有一行字符串,内容如下:

C:\notmydocument\treen\s.zip

然后我们需要将读取的文件内容作为一个参数(字符串)传入某个函数,此时需要担心C:后面的\n被转换成换行符吗?

content=content.replace(/\\/g,'\\')

↑要再执行一次转换?这样处理是否OK?(不需要也不能)

其实没有那么复杂,简单地说,只有当“输入”字符串的时候,并且遇到要输入特殊的字符的时候,才需要用到\符号。

这个输入是指我们用键盘定义字面量的时候,比如我们需要给一个变量书面赋值What's the name of \ key?

var strt='What\'s the name of \\ key?'

上面有两个地方进行了转义,'\两个字符,由于外部用了'来定义字符串,冲突了,所以字符串内部需要转义',而\这个字符本身作为转义符,要输入其自身就需要\\这样输入;

再举一个例子:

当定义正则表达式时候,如果用书面定义,为var r=/\\/ ,如果用new RegExp的话,需要写成下面的形式:

var r= new RegExp('\\\\');

为什么要重复这么多次呢呢呢呢?

因为RegExp第一个参数为一个字符串,我们需要的字符串是\\,然后我们用键盘输入\\这个字符串,就需要输入为\\\\了。

最后再强调一下:只有当用户用字面量去定义一个字符串的时候,特殊字符需要用到\来转移,其余时候不用转义。