Ecma-262废置函数:unescape
在 Ecma-262 3.0中将废置了unescape
函数,虽然大多数的浏览器现在还保留了这个函数,但是说不定哪天就不能用了。本着学习 Ecma-262标准和为将来的不时之需还是根据 Ecma-262 2.0标准中的定义实现一个 unescape
的好。
“你为什么不实现 Ecma-262 2015(ES6)里面的函数,为将来的浏览器兼容做准备?! 这个似乎更现实”
“是我太懒了,还没看 ^_^”
“escape呢?”
“这个我还没想到可以在那里用”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
window.unescape = window.unescape || function(string){
var r1=string.toString();
var r2=r1.length;
var R="";
var k=0;
while(1){
if( k >= r2 ) return R; // 标准里写的是 ==
var c = r1.charAt(k);
if( c === "%" ){
var subInt4 = r1.substr(k+2,4);
var subInt2 = r1.substr(k+1,2);
if( k+6 <= r2 && (r1.charAt(k+1) ==="u") && /^[0-9a-fA-F]{4}$/.test(subInt4)){
c = String.fromCharCode(parseInt(subInt4,16));
k+=5;
}else if(k+3 <= r2 && /^[0-9a-fA-F]{2}$/.test(subInt2)){
c = String.fromCharCode(parseInt(subInt2,16));
k +=2;
}
}
R += c;
k++;
}
}
版权信息
本文链接:http://zonxin.github.io/post/2015/08/ecma-262-v2.0-unescape
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。