我正在 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/