2015-04-14 18 views
1

我正在玩JS,而我注意到一個奇怪的行爲,反斜槓\插入使用JSON.stringify()打印的數組中的字符串中。當然,反斜槓用於轉義特殊字符,但如果我們需要在字符串中加反斜槓,會發生什麼?只要用反斜槓逃逸本身你的想法,但它不與JSON.stringifyJSON.stringify - 在數組中使用反斜槓的奇怪行爲

工作這應該打印一個反斜槓

array = ['\\']; 
 
document.write(JSON.stringify(array));

這應該打印兩個反斜槓

array = ['\\\\']; 
 
document.write(JSON.stringify(array));

我錯過了什麼嗎?可能被認爲是JSON.stringify的錯誤?

+0

JSON.stringify是逃避你已經有反斜槓。 – c0d3junk13

+1

「這應該打印一個反斜槓」---它不應該 – zerkms

+0

那麼我怎樣才能用JSON.stringify打印一個反斜槓?當然'array = ['\'];'會失敗並且沒有終止的字符串.. – DrKey

回答

3

這是正確的。 JSON.stringify將返回所需的字符串重新創建該對象 - 因爲您的字符串要求您轉義反斜槓,它也將返回所需的轉義反斜槓以正確生成字符串。

試試這個:

array = ['\\']; 
var x = JSON.stringify(array) 
var y = JSON.parse(x) 
if (array[0] == y[0]) alert("it works") 

array = ['\\']; 
if (JSON.parse(JSON.stringify(array))[0] == array[0]) alert("it really works") 
+0

非常好的解釋!大!! –