2016-10-09 5 views
-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); 
+5

'Array.prototype.forEach'は何も返しませんので。 – zerkms

+0

'arr'に' range(100) 'を、' arr'に 'forEach'を格納します。 'forEach'は何も返さないので、未定義です:https://jsfiddle.net/wj7akeh8/ – Li357

+1

[' map'](https://developer.mozilla.org/en-US/docs/Web/) JavaScript/Reference/Global_Objects/Array/map)であり、 'forEach'ではありません。 'map'では、' array [index] 'を更新する代わりに関数から新しい値を返すべきです。いくつかの例については、ドキュメンテーションを見てください。 – DaoWen

答えて

関連する問題