javascript指数扩展

javascript指数扩展,javascript,math,exponential,Javascript,Math,Exponential,在这里找到这个函数 String.prototype.expandequinology=function(){ 返回此。替换(/^([+-])?(\d+)。(\d*)[eE]([-+]?\d+)$/,函数(x,s,n,f,c){ 变量l=+c=x?c-x+l:0), z=(新数组(c+1)).join(“0”),r=n+f; 返回(s | |“”)+(l?r=z+r:r+=z).substr(0,i+=l?z.length:0)+(i

在这里找到这个函数

String.prototype.expandequinology=function(){
返回此。替换(/^([+-])?(\d+)。(\d*)[eE]([-+]?\d+)$/,函数(x,s,n,f,c){
变量l=+c<0,i=n.length++c,x=(l?n:f).length,
c=((c=Math.abs(c))>=x?c-x+l:0),
z=(新数组(c+1)).join(“0”),r=n+f;
返回(s | |“”)+(l?r=z+r:r+=z).substr(0,i+=l?z.length:0)+(i
我得到了替换部分,但是当我看到函数(x,s,n,f,c)部分时,我就迷路了。我错过了什么

有人能帮我把它分解成更容易理解的部分吗?

参见

基本上,
x
是匹配的子字符串
s
对应于第一对括号(
([+-])
)匹配的部分,
n
对应于第二对括号(
(\d+)
)匹配的部分,依此类推


匹配的字符串将被此函数返回的值替换。

您可以将函数作为
replace()
调用的第二个参数传递

参数列表():

  • 匹配子字符串-在您的情况下为
    x
  • 带括号的n个子匹配字符串-在您的示例2中:
    s
    n
  • 匹配子字符串的偏移量-在您的情况下
    f
  • 总字符串-在您的示例中为
    c

这些只是参数名称,随意且模糊/缩小
String.prototype.expandExponential = function(){
return this.replace(/^([+-])?(\d+).?(\d*)[eE]([-+]?\d+)$/, function(x, s, n, f, c){
    var l = +c < 0, i = n.length + +c, x = (l ? n : f).length,
    c = ((c = Math.abs(c)) >= x ? c - x + l : 0),
    z = (new Array(c + 1)).join("0"), r = n + f;
    return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
});
};