-2
次のコードスニペットで、なぜ未定義のログが表示されるのですか?しかし、私が範囲メソッドを呼び出してローカル変数に格納して、foreach
を実行すると、正常に動作します。配列が定義されていないのはなぜですか?
var range = function (max) {
var result = [];
var index;
for (index = 0; index <= max; index = index + 1) {
result.push(index);
}
return result;
};
var arr= range(100).forEach(function (number, index,array) {
if (number % 3 == 0) {
array[index] = "c";
}
});
console.log(arr);
'Array.prototype.forEach'は何も返しませんので。 – zerkms
'arr'に' range(100) 'を、' arr'に 'forEach'を格納します。 'forEach'は何も返さないので、未定義です:https://jsfiddle.net/wj7akeh8/ – Li357
[' map'](https://developer.mozilla.org/en-US/docs/Web/) JavaScript/Reference/Global_Objects/Array/map)であり、 'forEach'ではありません。 'map'では、' array [index] 'を更新する代わりに関数から新しい値を返すべきです。いくつかの例については、ドキュメンテーションを見てください。 – DaoWen