2016-10-06 1 views
0

В следующем коде яваскрипта (подчеркивание библиотеки):Подчеркивание Код Не Понял

function getStudentInfo(elem, indx, list){ 
    //does stuff with them 
} 
window.addEventListener("load", function(e){ 
    _.each(students,getStudentInfo); 
} 

студентов массив выглядит следующим образом

var students=[ 
{ 
"first":"Woody", 
"stuff":"12", 
} 
//a lotta objects here 
] 

мой вопрос состоит в вызове Underscore _.each обратно функции , (getStudentInfo), где getStudentInfo знает, что такое параметры? Что передало ему параметры?

+1

Вы прочитали документы? http://underscorejs.org/#each –

+2

* «Что передало ему параметры?» * '_.each' делает. Вы передаете функцию '_.each',' _.each' вызывает эту функцию. Какие параметры передаются функции, объясняется в документации. –

+0

Считайте, что передача 'getStudentInfo' в качестве параметра' _.each' (почти) идентична выражению 'function (elem, indx, list) {return getStudentInfo (elem, indx, list); } '. –

ответ

0

_.each (..) функция обратного вызова принимает 3 параметра

  1. Element - > массива/списка
  2. Указатель -> элемент массива/список
  3. список -> Список iteself

вы звоните _.each(), передавая список в качестве первых параметров и отдыха она берет на себя, пропуская же в функции обратного вызова одного по один

_.each («Список/массив», функция обратного вызова)

-2

Здесь вы делаете операции над массивом, и для этой самой популярной библиотеки javacript используется lodash (который известен как «_»).

Функция обратного вызова всегда возвращает значение, которое является отдельным элементом массива. он работает так же, как и forEach loop javascript.

см https://lodash.com/docs/4.16.3#forEach

для документации

+0

с помощью lodash мы можем достичь такой же функциональности. –

0

Если вы видите исходный код _.each функции, он будет, как показано ниже фрагменте кода. где

OBJ: ваш массив

iteratee: функция обратного вызова

if (isArrayLike(obj)) { // checks for an array and it it is.. 
    for (i = 0, length = obj.length; i < length; i++) { // iterate over the array elements 
    iteratee(obj[i], i, obj); // and pass each element to callback function 
    } 
}