这个Javascript程序的第6行让我很困惑
在下面的函数这个Javascript程序的第6行让我很困惑,javascript,Javascript,在下面的函数takeNormal()中,有一行我完全不懂。它是: var end = reduce(Math.min, text.length, map(indexOrEnd, ["*", "{"])); 具体来说,在这个函数reduce中,它有所有这些不同的参数(它们是参数吗?)。它们是如何通过reduce处理的?他们一个接一个地被处理了吗?或者,例如,Math.min对text.length做了什么?reduce中的不同部分是如何相互作用的,reduce最终对它们做了什么 functi
takeNormal()
中,有一行我完全不懂。它是:
var end = reduce(Math.min, text.length, map(indexOrEnd, ["*", "{"]));
具体来说,在这个函数reduce中,它有所有这些不同的参数(它们是参数吗?)。它们是如何通过reduce处理的?他们一个接一个地被处理了吗?或者,例如,Math.min
对text.length
做了什么?reduce中的不同部分是如何相互作用的,reduce最终对它们做了什么
function splitParagraph(text) {
function indexOrEnd(character) {
var index = text.indexOf(character);
return index == -1 ? text.length : index;
}
function takeNormal() {
var end = reduce(Math.min, text.length,
map(indexOrEnd, ["*", "{"]));
var part = text.slice(0, end);
text = text.slice(end);
return part;
}
function takeUpTo(character) {
var end = text.indexOf(character, 1);
if (end == -1)
throw new Error("Missing closing '" + character + "'");
var part = text.slice(1, end);
text = text.slice(end + 1);
return part;
}
var fragments = [];
while (text != "") {
if (text.charAt(0) == "*")
fragments.push({type: "emphasised",
content: takeUpTo("*")});
else if (text.charAt(0) == "{")
fragments.push({type: "footnote",
content: takeUpTo("}")});
else
fragments.push({type: "normal",
content: takeNormal()});
}
return fragments;
}
这些
reduce
和map
函数定义在哪里?这些代码让我嫉妒。我希望JavaScript1.8扩展可以跨浏览器使用。我不知道。这是一本javascript书籍中的教程。不是一个完整的程序。@John所以在OP的代码中,Math.map将是应用于数组的回调函数,但是initialValue是什么?在OP的代码中,还有text.length和map函数。在Mozilla?array.reduce(callback[,initialValue])参数回调函数解释的上下文中,这些参数如何工作,以便对数组中的每个值执行回调函数。要用作回调的第一个调用的第一个参数的initialValue对象。