3 javascript regex str-replace
我简直无法理解为什么第二行和第三行的输出彼此不同:
alphabet_ASCII = '';
for (i=65; i<=90; i++) {
alphabet_ASCII += i;
}
alphabet_ASCII += '<br>';
document.body.innerHTML += alphabet_ASCII;
document.body.innerHTML +=
alphabet_ASCII.replace(/\d{2}/g, x=>String.fromCharCode(x));
document.body.innerHTML +=
alphabet_ASCII.replace(/\d{2}/g, String.fromCharCode);Run Code Online (Sandbox Code Playgroud)
x=>String.fromCharCode(x)和之间有什么区别String.fromCharCode?
因为String.fromCharCode接受多个参数,并且replace调用回调不仅仅是您期望的一个参数:它使用以下命令调用回调:
所以在你的第二个例子中,String.fromCharCode获得的参数比你的第一个更多,并且最好用它们.在第一个回调中,String.fromCharCodeget "65", 0, "6566676869707172737475767778798081828384858687888990"和so返回"A\u0000\u0000"(因为第二个参数为0而第三个参数无效).在第二次通过它得到"66", 2, "6566676869707172737475767778798081828384858687888990"并返回"B\u0002\u0000"等