forEach работает без передачи аргументов? - PullRequest
1 голос
/ 30 мая 2020
var arr = [2, 3];

const addNum = (num) => console.log(num + 2); 

arr.forEach(addNum);

Result in the console: 
// 4
// 5

В приведенном выше коде я использовал метод forEach, а в качестве функции обратного вызова я использовал функцию addNum. Но в функции addNum я не передавал никаких аргументов, и она все еще работает, почему?

Ответы [ 3 ]

2 голосов
/ 30 мая 2020

Функция forEach имеет аргумент, который принимает функцию .

В документации указана подпись как:

arr.forEach(callback(currentValue [, index [, array]])[, thisArg])

Однако вы можете указать эту функцию тебе нравится. Он может быть предопределенным или встроенным, как в forEach(function(x) { ... }) или forEach(x => ...).

У вас есть большая гибкость в том, как вы вызываете функции, такие как forEach, поскольку они обычно следуют одному и тому же правила. Это шаблон, который вы часто увидите в JavaScript.

1 голос
/ 30 мая 2020

Поскольку foreach получает обратный вызов (currentValue [, index [, array]]) , поэтому в данном случае currentValue - num

0 голосов
/ 30 мая 2020
arr.forEach(callback(currentValue [, index [, array]])[, thisArg])

Потому что метод forEach() выполняет предоставленную функцию один раз для каждого элемента массива.

...