javascript cookie 编码解码
我参考了github上的一个插件: cookies ,在该代码的第73行,是设置并格式化cookie对象的一个函数。
这段代码如何理解:
value = (value + '').replace(/[^!#$&-+\--:<-\[\]-~]/g, encodeURIComponent);
直接这么做:
encodeURIComponent(value)
也没啥区别啊!
求解释。
高达08MS
11 years, 11 months ago
Answers
/[^!#$&-+\--:<-\[\]-~]/g
的含义是:除了
!#$&-+\--:<-\[\]-~
以外的其它字符。也就是说,对于
#
、
&
一类的字符不 encode。
比如
"测#&+试".replace(/[^!#$&-+\--:<-\[\]-~]/g, encodeURIComponent);
返回
%E6%B5%8B#&+%E8%AF%95
;而
encodeURIComponent("测#&+试")
返回
%E6%B5%8B%23%26%2B%E8%AF%95
。
我的理解是,在这个场合,
#
、
&
等等特殊字符是无害的。只有
%
、
=
、
;
等特殊字符是有害的,可能造成语法错误。
奶油马铃薯
answered 11 years, 11 months ago