javascript - 为什么要在 JavaScript 中创建新函数

标签 javascript arrays function

我正在 Code School 上进行 JavaScript 公路旅行,我发现这非常有用,并且似乎让学习 JavaScript 变得更加持久,对我来说更有意义。在此之前我已经尝试过几本书,但运气不佳。

无论如何,回答这个问题;考虑以下因素

var fruits = ["Apple", "Orange", "Pineapple", "Cranbery", "Pomegranate" ];
var fruitJuice = fruits.map(function (fruit) {return "\n" + fruit + " juice";});
alert(fruitJuice);

为什么要为 map 函数创建一个名为“fruit”的新变量。我一直在 jsfiddle 中玩耍,我可以使用原始的“fruits”数组而不更改其内容。

例如:

var fruits = ["Apple", "Orange", "Pineapple", "Cranbery", "Pomegranate" ];
var fruitJuice = fruits.map(function (fruits) {return "\n" + fruits + " juice";});
alert(fruitJuice);

也可以正常工作,但在开始时使用相同的水果变量。

这是最佳实践还是我在这里遗漏了一些重要的东西?

感谢您的帮助。

最佳答案

var fruitJuice = fruits.map(function (fruit) {return "\n" + fruit + " juice";});

这是一个回调,一个你显然不熟悉的概念。 map 的作用本质上是这样的(简化解释):

var result = [];
for (var i = 0; i < fruits.length; i++) {
    result.push(callback(fruits[i]));
}
return result;

map 获取fruits 数组中的每个项目,将其传递到提供的callback 函数中,并获取该函数返回的任何内容。所以你的回调函数是:

function (fruit) {return "\n" + fruit + " juice";}

fruit 这里是函数的一个参数,即fruits[i]。如果您想引用该参数,则需要以某种方式命名该参数。当然,您仍然可以访问函数内范围内的任何其他变量,但 fruit 是由 map 传递给它的唯一数组元素。

关于javascript - 为什么要在 JavaScript 中创建新函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22632558/

相关文章:

javascript - 如何过滤带有多个参数的json对象?

javascript - 如何让月球绕地球平移并一起绕太阳转

python - 我想使用 python 中的加法函数从两个长度为 n 的数组创建一个 nxn 矩阵

javascript - Jquery/javascript函数问题

c - 关于在 C 中使用 "functions"

javascript - RxJS:Rx.Observable.interval 上的 debounceTime 未按预期工作

javascript - jQuery Accordion 获取父 li

java - 如何通过 Intent 将新数据添加到数组列表

Checknullarray 结构

c++ - 为什么第一个原型(prototype)是正确的而第二个是不正确的?