interview
javascript-frontend-basics
escapeencodeURIencodeURIComponent 的区别是什么

前端 JavaScript 基础面试题, escape,encodeURI,encodeURIComponent 的区别是什么?

前端 JavaScript 基础面试题, escape,encodeURI,encodeURIComponent 的区别是什么?

QA

Step 1

Q:: escape、encodeURI、encodeURIComponent 的区别是什么?

A:: 1. escape() 函数用于对字符串进行编码,使得被编码的字符串可以在所有的计算机上读取。它对所有非 ASCII 字符进行编码。已经被废弃,不推荐使用。 2. encodeURI() 函数用于编码完整的 URI,编码后的 URI 可以安全的进行 HTTP 请求。它不会编码 URI 中的保留字符,例如 “:”、“/”、“?” 等。 3. encodeURIComponent() 函数用于编码 URI 的某一部分,它会编码所有非字母和数字字符,包括 URI 保留字符。

Step 2

Q:: 为什么 encodeURIComponent() 比 encodeURI() 更适合编码 URI 的参数部分?

A:: 因为 encodeURIComponent() 会对所有非字母和数字字符进行编码,包括 URI 保留字符,这样可以确保参数部分不会因为特殊字符而导致 URI 解析错误。

Step 3

Q:: escape() 为什么被废弃,不推荐使用?

A:: escape() 不能正确编码所有的 Unicode 字符,并且在某些情况下会出现安全性问题,因此被废弃。现在推荐使用 encodeURI() 和 encodeURIComponent() 代替。

Step 4

Q:: 如何对 URL 中的特殊字符进行解码?

A:: 可以使用 decodeURI() 函数对完整的 URI 进行解码,使用 decodeURIComponent() 函数对 URI 的某一部分进行解码。

用途

在实际生产环境中,处理和传递 URL 参数是非常常见的需求。正确地对 URL 进行编码和解码可以避免因为特殊字符导致的 URI 解析错误,确保数据在客户端和服务器之间的传输安全可靠。因此,了解并正确使用这些函数对前端开发者来说是非常重要的。\n

相关问题

🦆
URL 编码和 URI 编码有什么区别?

URL 编码通常指的是将任意数据编码为适合在 URL 中传输的格式,而 URI 编码则是对 URI 中的某些部分进行编码以确保其在传输时不被解析错误。

🦆
什么是 Base64 编码?在什么时候需要使用?

Base64 编码是一种将二进制数据编码为 ASCII 字符串的方式。通常用于在 URL、Cookie、或者 JSON 数据中传输二进制数据。

🦆
前端如何处理用户输入的特殊字符以防止 XSS 攻击?

可以使用一些库或者自定义函数来对用户输入进行转义,例如将 < 转换为 &lt;,以防止恶意脚本被注入页面。

🦆
什么是跨域资源共享 CORS?如何处理跨域问题?

跨域资源共享 (CORS) 是一种机制,通过在响应头中设置适当的标识来允许浏览器上的资源请求跨越不同的源。可以通过设置服务器响应头中的 Access-Control-Allow-Origin 来处理跨域问题。