function myFunc(array, func) {
aray.forEach( ( ) => {
settimeout(func, 1000)
})
}
myFunc([1, 2, 3, 4], ( ) => {
console.log("print array after each 1 second" array) // переменную array не видит !!!!
})
// если же в при обьявлении функции myFunct мы setTimeOut передаем не ссылку на функцию, а саму функцию обявляем в параметре setTimeOut( ( ) => {
console.log(array); // Это работает .
}, 1000)
// второй вариант. // второй вариант. // второй вариант. // второй вариант. // второй вариант. // второй вариант.
function myFunc(array, func) {
aray.forEach( ( ) => {
SetTimeOut( ( ) => { console.log(array); } , 1000) // функцию лежащую в параметре func не используем а обьявляем ее в параметре setTimeOut.
})
}
myFunc([1, 2, 3, 4], ( ) => {
console.log("print array after each 1 second")
})
func
в вашем первом варианте «не знает» что у переменной array
есть какое-то там значение. Ведь её, функцию эту, объявили раньше и выше )array
известен на момент, когда заряжают таймер.function myFunc(arr, func) {
arr.forEach( ( ) => {
setTimeout(
func.bind(null, arr), // привязываем к функции аргумент
1000
)
})
}
myFunc([1, 2, 3, 4], (a) => {
console.log("print array after each 1 second", a);
});