方法显示:

这种方法使得有可能改写querystring.parse

Grammar:

复制代码代码如下所示:

querystring.unescape



接收参数:

没有什么

源代码 uff1a

复制代码代码如下所示:

安全快速的替代decodeuricomponent / /

querystring.unescapebuffer =函数(S,decodespaces){

var =新的缓冲区(s.length);

无功状态= 'char '; / /状态:char,hex0,该

VaR的N,M,hexchar;

对于(VAR inindex = 0,outindex = 0;inindex < s.length;inindex ++){

var c = s.charcodeat(inindex);

开关(状态){

case'char:

开关(c){

例(%)字符码:

n=0;

m=0;

状态= 'hex0;

打破;

Case charCode(+):

如果(decodespaces)C =字符码();

传递/通过

违约:

出{ outindex + } = C;

打破;

}

打破;

case'hex0:

状态= 'hex1;

hexchar = C;

如果(字符码('0')<= <= C C字符码(9)){

N = C字符码('0');

}(如果其他字符码C(A)<< =字符码(F)){

N = C字符码('a')+ 10;

}(如果其他字符码C(A)<< =字符码(F)){

N = C字符码('a')+ 10;

{人}

从outindex + } = {字符码(%);

出{ outindex + } = C;

状态= 'char;

打破;

}

打破;

case'hex1:

状态= 'char;

如果(字符码('0')<= <= C C字符码(9)){

M = C字符码('0');

}(如果其他字符码C(A)<< =字符码(F)){

M = C字符码('a')+ 10;

}(如果其他字符码C(A)<< =字符码(F)){

M = C字符码('a')+ 10;

{人}

从outindex + } = {字符码(%);

从outindex + hexchar } = {;

出{ outindex + } = C;

打破;

}

出{ outindex + } = 16 * n + m;

打破;

}

}

支持返回任意缓冲区。

返回out.slice(0,outindex - 1);

};