JavaScript 全局

  • 全局属性
  • Infinity 代表正的无穷大的数值
  • NaN 指示某个值是不是数字值
  • undefined 指示未定义的值
  • 全局函数
  • encodeURI() 把字符串编码为 URI 编码后的 url 仍可以直接用于请求

不编码字符~ ! @ # $ & * ( ) = : / , ; ? + ' 该方法能避开对用于URL里使用特殊字符编码,包括# ? & = : /
使用 encodeURI() 对 URL 编码后的字符串还是有效的URL,所以发送有空格等不属于 url 定义语法里的字符,可以用 encodeURI() 来做编码转换

  • decodeURI() 解码某个编码的 URI
  • encodeURIComponent() 把字符串编码为 URI 组件 编码后的 url 不可以直接用于请求

不编码字符- _ . ! ~ * ' ( ) 和 encodeURI() 不同,encodeURIComponent() 会对用于定义 URL 的字符# ? & = : /等做编码,所以 encodeURIComponent() 编码后的 url 不可以直接用于请求

应用场景
对 url 里的查询参数做编码,例如可以对参数为 url 的值做编码转换注意 因为 encodeURIComponent() 不会对单引号'做编码转换,所以建议字符串里用到单引号的地方使用双引号
另外也可以在 encodeURIComponent() 编码后再把单引号等字符转换为对应的编码

  • decodeURIComponent() 解码一个编码的 URI 组件
  • escape() 对字符串进行编码

不编码字符 @ * / + 该方法从 ECMAScript 3 开始就被废弃,建议不要使用

  • unescape() 对由 escape() 编码的字符串进行解码
  • eval() 计算 JavaScript 字符串,并把它作为脚本代码来执行
  • isFinite() 检查某个值是否为有穷大的数
  • isNaN() 检查某个值是否是数字
  • Number() 把对象的值转换为数字
  • parseFloat() 解析一个字符串并返回一个浮点数
  • parseInt() 解析一个字符串并返回一个整数
  • String() 把对象的值转换为字符串

talk is cheap, show me the code.

举些例子

let url ='http://showdoc.itplh.com/web/#/4?page_id=10&token=123+456[; / ? : @ & = + $ , #]'
let encode_url = window.encodeURI(url)
let encode_url2 = window.encodeURIComponent(url)
console.log('encodeURI', encode_url)
console.log('encodeURIComponent', encode_url2)
console.log('decodeURI', decodeURI(encode_url))
console.log('decodeURIComponent', decodeURIComponent(encode_url2))

let str = 'hello world'
let escape_str = window.escape(str)
console.log('escape', escape_str)
console.log('unescape', unescape(escape_str))

输出

encodeURI http://showdoc.itplh.com/web/#/4?page_id=10&token=123+456%5B;%20/%20?%20:%20@%20&%20=%20+%20$%20,%20#%5D

encodeURIComponent http%3A%2F%2Fshowdoc.itplh.com%2Fweb%2F%23%2F4%3Fpage_id%3D10%26token%3D123%2B456%5B%3B%20%2F%20%3F%20%3A%20%40%20%26%20%3D%20%2B%20%24%20%2C%20%23%5D

decodeURI http://showdoc.itplh.com/web/#/4?page_id=10&token=123+456[; / ? : @ & = + $ , #]

decodeURIComponent http://showdoc.itplh.com/web/#/4?page_id=10&token=123+456[; / ? : @ & = + $ , #]

escape hello%20world

unescape hello world

参考

JavaScript 全局

JavaScript escape(),encodeURI()和encodeURIComponent()使用场景