escape() 函数
可以对字符进行编码,这样就可以在所有的计算机上读取该字符串,返回值为已编码的 string 的副本,其中某些字符被替换成了十六进制的转义序列,但该方法不会对ASCII字母和数字进行编码,也不会下面这些ASCII标点符号进行编码:*@-_+./,其他所有的字符都会被转义序列替换;
console.log(escape('hello ct111!')+'<br/>'); // hello%20ct111%21<br/>
console.log(escape('?=()#$$$')); // %3F%3D%28%29%23%24%24%24
console.log(unescape('hello%20ct111%21<br/>')); // hello ct111!<br/>
console.log(unescape('%3F%3D%28%29%23%24%24%24')); // ?=()#$$$
unescape() 函数
可以对通过 escape() 编码的字符串进行解码,返回值是 string 被解码后的一个副本,该函数的工作原理是这样的:通过找到形式为 %xx 和 %uxxxx 的字符序列(x 表示十六进制的数字),用 Unicode 字符 \u00xx 和 \uxxxx 替换这样的字符序列进行解码;
decodeURI() 和 decodeURIComponent()
ECMAScript v3 已从标准中删除了 escape() 函数和 unescape() 函数,并反对使用它们,因此应该使用 decodeURI() 和 decodeURIComponent() 取而代之;