Я читаю исходный текст подчеркивания и, в частности, смотрю на метод _.each
.Подчеркивающий метод _.each
Я убрал это до этого, но я немного смущен, как это работает, передавая функцию.
_.each = function(obj, iteratee, context) {
var i, length;
for (i = 0, length = obj.length; i < length; i++) {
iteratee(obj[i], i, obj);
}
return obj;
};
Затем в консоли, если я пишу это:
var sum = 0;
_.each([1,2,3], function(n){
sum += n;
});
//sum === 6;
, что я пытаюсь понять, что именно происходит в методе _.each
.
obj === [1,2,3]
и iteratee == function(n){sum += n}
.
При подключении этого в петлю, это правильно при первом запуске цикла
iteratee(obj[i], i, obj);
приравнивает к следующему?
function (n){
sum += n;
}([1,2,3][0], 0, [1,2,3])
Как вызывается функция? Вызывает ли цикл его? Я не думаю, что это делает
Когда я играю вокруг и использовать следующий код я получаю сообщение об ошибке ниже:
for(var i = 0; i < 3; i++){
function (n){
sum += n;
}([1,2,3][i], i, [1,2,3]);
}
console.log(sum)
//Uncaught SyntaxError: Unexpected token (
Может кто-нибудь пролить свет на то, что здесь происходит?
Try обернуть функцию и его параметры в скобках. Например: '(function (n) {sum + = n;} ([1,2,3] [i], i, [1,2,3])).'. –
Я сделал это, и он работает, но где в источнике это 'IIFE'? –
Вы передаете функцию в качестве параметра. 'iteratee' - это функция. –