当我在工作一些奇怪的JavaScript代码时,我发现了这一点:

string = decodeURIComponent(encodeURIComponent(string));


我认为,此代码无用,因此必须将其删除。但这在某些非常特殊的情况下可能是一个hack。 Google向我展示了该指令还存在其他程序。

那么,您知道这是什么结果吗?只是一个字符串的慢速内存副本?

最佳答案

仅仅看一下,我会说他们彼此抵消,返回的字符串是原始输入字符串。除非我错过任何东西,否则它没有副作用。

但是,我以前看过这样的代码

return unescape( encodeURIComponent( s ) );




return decodeURIComponent( escape( s ) );


它使用了encodeURIComponent / decodeURIComponent绑定到UTF8而不是转义/转义的事实。

取消UTF-8编码/解码部分以外的所有部分是很容易的事情,这些部分发生在经过高度优化的浏览器本机代码中,而不是手写的javascript代码中。

有关详细说明,请参见http://monsur.hossa.in/2012/07/20/utf-8-in-javascript.html

关于javascript - encodeURIComponent(encodeURIComponent(string))的结果是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15359597/

10-11 12:17