js unescape 实现
unescape 函数的作用
unescape 是 JavaScript 的一个全局函数,用于解码由 escape 函数编码的字符串。它将十六进制编码的字符(如 %20)转换回原始字符(如空格)。

基本语法
unescape(encodedString)
encodedString:通过escape编码的字符串。
使用示例
解码包含 URL 编码的字符串:

const encodedStr = "Hello%20World%21";
const decodedStr = unescape(encodedStr);
console.log(decodedStr); // 输出: "Hello World!"
替代方案
由于 unescape 已废弃(非严格模式下仍可用),推荐使用现代 API:
decodeURI:解码完整的 URI(不解码#、&、=等特殊字符)。decodeURIComponent:解码 URI 的组成部分(包括所有特殊字符)。
const uriEncoded = "Hello%20World%21";
console.log(decodeURIComponent(uriEncoded)); // 输出: "Hello World!"
注意事项
unescape不会解码+为空格(decodeURIComponent也不会,需手动处理)。- 非 ASCII 字符(如中文)应优先使用
decodeURIComponent。
手动实现 unescape
若需兼容旧代码,可手动实现类似逻辑:
function customUnescape(str) {
return str.replace(/%([0-9A-F]{2})/g, (match, hex) => {
return String.fromCharCode(parseInt(hex, 16));
});
}
总结
- 优先使用
decodeURIComponent替代unescape。 - 遗留代码需处理时,注意非 ASCII 字符的兼容性。






