说一下 escape、encodeURI、encodeURIComponent 有什么区别?具体的使用场景?

escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读。

后两者都是编码URL,唯一区别就是编码的字符范围, encodeURIComponent比encodeURI编码的范围更大。

encodeURI方法不会对下列字符编码 ASCII字母 数字 ~!@#$&*()=:/,;?+’
encodeURIComponent方法不会对下列字符编码 ASCII字母 数字 ~!*()’

应用场景 例子
escape 编码字符串 escape(‘你好’);
‘%u4F60%u597D’
encodeURI 编码整个URL encodeURI(‘https://www.baidu.com/s?wd=你好’);
https://www.baidu.com/s?wd=%E4%BD%A0%E5%A5%BD’
encodeURIComponent 编码URL中的参数 https://www.baidu.com/s?wd=’+encodeURIComponent(‘你好’);
https://www.baidu.com/s?wd=%E4%BD%A0%E5%A5%BD’

image.png

参考:

https://www.zhihu.com/question/21861899