我一直以爲,console 能保證所見即所得,所以我一向喜歡用console完成簡單的調試,然而本週我被坑了,其原因就是字符串轉義。
先說爲什麼需要字符串轉義,簡單的說就是在某些特殊情況下(比如說字符串裏套字符串,比如說正則表達式中用一些有着特定含義的字符),然而轉義的時候,你打印出來的結果和你輸入進去那個,多半不是同一個,我們可以看一個例子
可以很清楚的看到,我輸入的時候有兩個反斜槓,而輸出時候就沒了,當我直接用輸出的值的時候,必然會直接報錯。
而這個變量可以被JSON解析,也就是說,當字符串被JSON化的時候,也會出現轉義的情況
你可能要說,沒有反斜槓啊?那是不是說明沒有轉義?
答案還是轉義了,因爲我們可以看到"出現了四個,但是第1個和第2個卻不成對,這是因爲第2個被轉義了
那爲什麼沒有看到反斜槓呢?
還是之前那個問題,console的時候字符串轉義已經生效了,\"變成了一個單純的字符",而不是具有語法意義的",所以我們沒有看到"。從某種程度上講,console確實是把反斜槓吃掉了。
所以要警惕這一點,console並不能保證所見即所得,至少設計轉義的時候是這樣的。