这个JavaScript函数有什么作用?有意义吗
What does this javascript function do? Does it make sense?
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
逐行进行:
- 我们将一个名为
format
的函数附加到本机String
对象(注意,不是字符串的实例。 为此,您将使用String.prototype
(。 -
arguments
是一个特殊对象,是函数执行上下文的一部分(其中还包括this
的值等内容(。 它是类似数组的(它有从0
到arguments.length-1
的键(,但它不是一个数组(它不是Array
的实例,因此没有任何原型方法,如pop
或push
(。arguments
对象是 JavaScript 函数如何接受任意数量的参数。 - 循环遍历每个参数...
- 构建一个与 i
{
匹配的正则表达式}
其中 i 是循环迭代次数。 第二个参数是正则表达式选项,gm
启用全局和多行模式。 - 将匹配项替换为提供的值
- 返回修改后的字符串。
它以大致相同的方式格式化字符串。NET 的System.String.Format
有效(如果您熟悉的话(;它将每个{someNumber}
替换为第 someNumber + 1
个参数。所以:
alert(String.format('{0} + {1} = {2}', 2, 5, 7));
会给出:
2 + 5 = 7
arguments
是传递给 JavaScript 函数的参数的"神奇"数组*。
是的,这是有道理的。
* 实际上,它不是一个数组,但它看起来像一个。
相关文章:
- 在前端javascript应用程序中使用DI容器有意义吗
- Node.js时使用async是有意义的
- “$xml = $( xmlDoc )”有什么作用
- Angular $q.reject().success(),这有意义吗?
- 发现这个讨厌的代码,我想知道它有什么作用?我应该担心吗..
- 这个图像加载功能有什么作用
- 在JavaScript中使用===进行字符串比较有意义吗
- 传递给IIFE包装器有多少全局变量是有意义的
- 将Epoch日期转换为有意义的Javascript日期
- Javascript-确定对象中是否有任何作用域引用
- 在标准ES6类中添加getter方法有意义吗
- 点击更改顶部位置不会有任何作用
- meteor / react - “readOnly”属性有什么作用
- “this”这个词在jQuery中有什么作用
- 金属特性在三.JS中有什么作用
- 像“apples: 5”这样的行在 JavaScript 中有什么作用
- 在 Function.prototype.method 中返回它有什么作用
- 为给定数量的空格查找可能数量的有意义的英语单词
- 本声明的结尾部分有什么作用
- 这个JavaScript函数有什么作用?有意义吗