Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему метод forEach не работает в функции? (https://javascript.ru/forum/misc/79997-pochemu-metod-foreach-ne-rabotaet-v-funkcii.html)

alex-nosov1980 15.04.2020 18:25

Почему метод forEach не работает в функции?
 
Объясните пожалуйста новичку почему forEach не работает в функции.
Дан массив а1 нужно перемножить элементы массива на 2 используя forEach. Действия должны запускаться при вызове функции.

В первом случае все работает:

const a1 = [4, 5, 6, 7, 12, 34, 56, 78, 90, 11];
let str = '';
a1.forEach(a => {
    let d = (a * 2);
    str += d + ',';
})
let a1_res = str.split(',');
document.querySelector('.b1').onclick = () => console.log(a1_res);


В этом нет:

const a1 = [4, 5, 6, 7, 12, 34, 56, 78, 90, 11];
let str = '';
document.querySelector('.b1').onclick = () => {
    a1.forEach(a => {
        let d = (a * 2);
        str += d + ',';
    })
}
let a1_res = str.split(',');
console.log(a1_res);

voraa 15.04.2020 19:29

В вашем втором примере порядок выполнения будет такой
Стр 1, 2, 3 (тут в свойство onclick запишется ссылка на функцию)
Потом стр. 9, 10 (str будет еще '')
А строки 5-7 будут выполнены только после клика.

Вот так надо.
const a1 = [4, 5, 6, 7, 12, 34, 56, 78, 90, 11];
let str = '';
document.querySelector('.b1').onclick = () => {
    a1.forEach(a => {
        let d = (a * 2);
        str += d + ',';
    })
    let a1_res = str.split(',');
    console.log(a1_res);
}

alex-nosov1980 15.04.2020 20:42

Спасибо, оказывается все так просто. А я полтора часа голову ломал.


Часовой пояс GMT +3, время: 00:05.