javascript cookie 编码解码

我参考了github上的一个插件:cookies,在该代码的第73行,是设置并格式化cookie对象的一个函数。

这段代码如何理解:

value = (value + '').replace(/[^!#$&-+\--:<-\[\]-~]/g, encodeURIComponent);

直接这么做:encodeURIComponent(value)也没啥区别啊!

求解释。

阅读 9.7k
2 个回答

/[^!#$&-+\--:<-\[\]-~]/g的含义是:除了 !#$&-+\--:<-\[\]-~ 以外的其它字符。也就是说,对于 #& 一类的字符不 encode。

比如 "测#&+试".replace(/[^!#$&-+\--:<-\[\]-~]/g, encodeURIComponent); 返回 %E6%B5%8B#&+%E8%AF%95;而 encodeURIComponent("测#&+试") 返回 %E6%B5%8B%23%26%2B%E8%AF%95

我的理解是,在这个场合,#& 等等特殊字符是无害的。只有 %=; 等特殊字符是有害的,可能造成语法错误。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题