我一直以为,console 能保证所见即所得,所以我一向喜欢用console完成简单的调试,然而本周我被坑了,其原因就是字符串转义。
先说为什么需要字符串转义,简单的说就是在某些特殊情况下(比如说字符串里套字符串,比如说正则表达式中用一些有着特定含义的字符),然而转义的时候,你打印出来的结果和你输入进去那个,多半不是同一个,我们可以看一个例子
可以很清楚的看到,我输入的时候有两个反斜杠,而输出时候就没了,当我直接用输出的值的时候,必然会直接报错。
而这个变量可以被JSON解析,也就是说,当字符串被JSON化的时候,也会出现转义的情况
你可能要说,没有反斜杠啊?那是不是说明没有转义?
答案还是转义了,因为我们可以看到"出现了四个,但是第1个和第2个却不成对,这是因为第2个被转义了
那为什么没有看到反斜杠呢?
还是之前那个问题,console的时候字符串转义已经生效了,\"变成了一个单纯的字符",而不是具有语法意义的",所以我们没有看到"。从某种程度上讲,console确实是把反斜杠吃掉了。
所以要警惕这一点,console并不能保证所见即所得,至少设计转义的时候是这样的。