有这样一种情景:
使用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第一个参数为一个字符串,我们需要的字符串是\\
,然后我们用键盘输入\\
这个字符串,就需要输入为\\\\
了。
最后再强调一下:只有当用户用字面量去定义一个字符串的时候,特殊字符需要用到\
来转移,其余时候不用转义。