当我在工作一些奇怪的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/