Как использовать функции стрелок внутри других функций?
полный код находится в ссылке, я пытаюсь объявить функцию стрелки, присвоив ее переменной 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
?