decodeuriccomponent (encodeuriccomponent (string))的结果是什么?
What is the result of decodeURIComponent(encodeURIComponent(string))?
当我在工作中处理一些奇怪的JavaScript代码时,我发现了这个:
string = decodeURIComponent(encodeURIComponent(string));
在我看来,这段代码是无用的,我必须删除它。但也许这是针对某些特殊情况的一种hack。Google告诉我,还有其他程序有这个指令。
那么,你知道结果是什么吗?只是一个缓慢的字符串内存副本?
从表面上看,它们相互抵消了,返回的字符串是原始输入字符串。除非我错过了什么,否则它没有副作用。
但是,我以前见过这样的代码
return unescape( encodeURIComponent( s ) );
和
return decodeURIComponent( escape( s ) );
使用encodeuriccomponent/decodeuriccomponent与UTF8绑定的事实,而escape/unescape不是。
这是一个hack来取消所有,但UTF-8编码/解码部分,这发生在大量优化的浏览器本地代码,而不是手写的javascript代码。
参见http://monsur.hossa.in/2012/07/20/utf-8-in-javascript.html获得详细解释。
相关文章:
- 我的localStorage结果显示了[null,null,“something”]],而不是“”;什么”;
- stub.callsArg(index) from Sinon.JS 是做什么的
- 有人可以向我解释一下代码的JavaScript / Ajax部分是做什么的
- Eloquent JS第5章中的这段代码是做什么的
- JavaScript's替换与document.create()结合的函数-这个代码是做什么的
- Javascript .call() 用法.一个工作案例,一个不是.有什么区别
- 注入jquery会完全改变页面结果——这是一种糟糕的方式
- 网络应用程序是用什么语言编写的
- jQuery 函数 $('#myelement').is('*') 是做什么的
- “window.functionname&&functionname()”是做什么的
- scroll.scrolldisabler是做什么的
- ECMAScript 中的内部属性定义是为了什么
- 表达式 '$.mobile' [未定义] 的结果不是对象
- anObject.prototype.constructor 是做什么的
- 文档易受攻击是做什么的
- 这个伪jquery函数(r)脚本是做什么的
- dojo.empty() / domConstruct.empty() 到底是做什么的
- JavaScript 中的 handle_redirect() 是做什么的
- Function.prototype.toMethod() 是做什么的
- runInNewContext到底是做什么的