Как использовать функции стрелок внутри других функций?

полный код находится в ссылке, я пытаюсь объявить функцию стрелки, присвоив ее переменной randomColor с использованием array.push() метод, но я получаю ошибку "randomColor не определен", когда я запускаю код. Пожалуйста помоги.

function generateRandomColors(num){
 let arr = [];
 for(let i=0;i < num;i++){
     arr.push(randomColor());
 }
 return arr;
}

let randomColor = () => {
    //random for red
    let r = Math.floor(Math.random() * 256);
    //random for blue
    let g = Math.floor(Math.random() * 256);
    //random for green
    let b = Math.floor(Math.random() * 256);
    //return rgb
    return "rgb(" + r + ", " + g + ", " + b +")";
};

1 ответ

Когда вы используете let (например let randomColor), переменная, которую вы объявляете, не может использоваться до ее объявления. Так что если вы попробуете позвонить generateRandomColors до вашего let randomColor = ... декларация, вы найдете это generateRandomColors еще не определено.

Смотрите особенно временную мертвую зону для let а также const:

Временная мертвая зона

let привязки создаются в верхней части области (блока), содержащей объявление, обычно называемое "подъем". В отличие от переменных, объявленных с var, который начнется со значения undefined, let переменные не инициализируются до тех пор, пока их определение не будет оценено. Доступ к переменной до инициализации приводит к ReferenceError, Переменная находится во "временной мертвой зоне" от начала блока до обработки инициализации.

Если это не решит вашу проблему, вы можете поделиться кодом, где вы пытаетесь позвонить generateRandomColors?

Другие вопросы по тегам