这个JavaScript函数有什么作用?有意义吗

What does this javascript function do? Does it make sense?

本文关键字:有意义 作用 什么 JavaScript 函数 这个      更新时间:2023-09-26
String.format = function()
{   var s = arguments[0];
    for (var i = 0; i < arguments.length - 1; i++)
    {   var reg = new RegExp("''{" + i + "''}", "gm");             
        s = s.replace(reg, arguments[i + 1]);
    }
  return s;
}

请解释一下。谢谢。

它将第一个参数作为格式字符串,并将{0}的实例替换为第二个参数,{1}替换为第三个参数,依此类推。

String.format('{0} there, {1}', 'Hi', 'Josh'); => Hi there, Josh


逐行进行:

  1. 我们将一个名为 format 的函数附加到本机 String 对象(注意,不是字符串的实例。 为此,您将使用 String.prototype (。
  2. arguments是一个特殊对象,是函数执行上下文的一部分(其中还包括 this 的值等内容(。 它是类似数组的(它有从 0arguments.length-1 的键(,但它不是一个数组(它不是Array的实例,因此没有任何原型方法,如 poppush (。 arguments对象是 JavaScript 函数如何接受任意数量的参数。
  3. 循环遍历每个参数...
  4. 构建一个与 i {匹配的正则表达式}其中 i 是循环迭代次数。 第二个参数是正则表达式选项,gm启用全局和多行模式。
  5. 将匹配项替换为提供的值
  6.  
  7. 返回修改后的字符串。

它以大致相同的方式格式化字符串。NET 的System.String.Format有效(如果您熟悉的话(;它将每个{someNumber}替换为第 someNumber + 1 个参数。所以:

alert(String.format('{0} + {1} = {2}', 2, 5, 7));

会给出:

2 + 5 = 7

arguments是传递给 JavaScript 函数的参数的"神奇"数组*。

是的,这是有道理的。


* 实际上,它不是一个数组,但它看起来像一个。