2013-03-12 56 views
2

雖然我工作在工作中一些奇怪的JavaScript代碼,我發現這一點:decodeURIComponent(encodeURIComponent(string))的結果是什麼?

string = decodeURIComponent(encodeURIComponent(string)); 

在我看來,這個代碼是沒有用的,我必須將其刪除。但是對於一些非常特殊的情況來說,這可能是一種破解。谷歌已經告訴我,有這個指令的其他程序。

那麼,你知道這是什麼結果嗎?只是一個字符串緩存的副本?

回答

0

只是看着它,我會說他們互相取消,返回的字符串是原始輸入字符串。除非我錯過了什麼,它沒有副作用。

不過,我已經看到了這樣的代碼之前

return unescape(encodeURIComponent(s)); 

return decodeURIComponent(escape(s)); 

它使用的事實,encodeURIComponent方法/ decodeURIComponent綁定到UTF8而逃避/ UNESCAPE不是。

除了UTF-8編碼/解碼部分之外,所有這些都是一種破解,它發生在大量優化的瀏覽器本機代碼內部,而不是手寫的JavaScript代碼。

查看http://monsur.hossa.in/2012/07/20/utf-8-in-javascript.html的詳細解釋。