(Не нашли эту Q при поиске, но может быть вопросом, не зная условий, для которых поиск)Несколько операторов в Javascript анонимной функции
Попытка имитировать диапазон(), используя код, который я нашел на SO (изучение языка, что позволяет избежать использования готовых функций в underscore.js), и у меня возникают проблемы понимания, почему это будет работать:
var range = Array.apply(null,Array(3));
range = range.map(function (x, i) {return i;});
Но это не делает:
var range = Array.apply(null,Array(3));
range = range.map(function (x, i) {
console.log(range[i-1]);
return i;
});
< undefined
< undefined
< undefined
Якобы только разница - это линия console.log
, но почему это должно иметь значение?
Заранее благодарен!
Они оба возвращают * ту же самую точную вещь '[0, 1, 2]' - единственное отличие, которое я вижу на выходе, - это 3 'undefined', напечатанные 'console.log()' (что следует ожидать, так как 'x' является фактическим элементом массива, а не индексом). – techfoobar
спасибо! «x» был немой опечаткой, но «неопределенные» сообщения все еще откачивались, когда исправлялись. Я отредактирую код, но @ShadowRanger объяснил это ниже. – Brandon