0

在这里找到这个功能

http://jsfromhell.com/string/expand-exponential

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) : "");
});
};

我有点得到替换部分,但是当我看到 function(x,s,n,f,c) 部分时我迷路了。我错过了什么?

有人可以帮我把它分解成更容易理解的组件吗?

4

2 回答 2

1

看到这个页面

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

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

于 2013-04-09T14:22:38.080 回答
1

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

参数列表(来自 MDN):

  • 匹配子字符串 - 在你的情况下x
  • n 带括号的子匹配字符串 - 在你的情况下 2:sn
  • 匹配子字符串的偏移量 - 在你的情况下f
  • 总字符串 - 在你的情况下c
于 2013-04-09T14:23:00.010 回答