Javascript 为什么可以';我不能将函数直接传递到replace方法中吗?
我简直无法理解为什么第二行和第三行输出彼此不同:Javascript 为什么可以';我不能将函数直接传递到replace方法中吗?,javascript,regex,str-replace,Javascript,Regex,Str Replace,我简直无法理解为什么第二行和第三行输出彼此不同: alphabet_ASCII=”; 对于(i=65;iString.fromCharCode(x)); document.body.innerHTML+= 字母表ASCII.replace(/\d{2}/g,String.fromCharCode)因为String.fromCharCode接受多个参数,并且replace使用您期望的多个参数调用回调:它使用以下参数调用回调: 所有匹配文本 任何捕获组的内容(如果有) 发生此匹配的索引(偏移量)
alphabet_ASCII=”;
对于(i=65;iString.fromCharCode(x));
document.body.innerHTML+=
字母表ASCII.replace(/\d{2}/g,String.fromCharCode)
因为String.fromCharCode
接受多个参数,并且replace
使用您期望的多个参数调用回调:它使用以下参数调用回调:
- 所有匹配文本
- 任何捕获组的内容(如果有)
- 发生此匹配的索引(偏移量)
- 整根绳子都在起作用
因此,在第二个示例中,
String.fromCharCode
比第一个示例中获得更多的参数,并且对它们做得最好。在第一次回调中,String.fromCharCode
获取“65”,0,“6566676869707172737475767778798081828384858687888990”
,因此返回“A\u0000\u0000”
(因为第二个参数为0,第三个参数无效)。第二次通过时,它得到“66”,2,“6566676869707172737475767778798081828384858687888990”
,并返回“B\u0002\u0000”
,等等。我不知道第三个和第四个参数。。很高兴知道,我会接受的时候possible@WashingtonGuedes:说实话,我也没有,但当我看到这个问题时,我想“我打赌这和你不能用forEach
…”做这件事的原因是一样的,然后查了一下。:-)只是想告诉你我的问题在哪里