Bienvenido a la Comunidad de Treehouse
¿Quieres colaborar en errores de código? ¿Tienes errores que necesitan comentarios? ¿Buscas un par de ojos adicionales en tu último proyecto? aquí.
¿Buscas aprender algo nuevo?
Treehouse ofrece una prueba gratuita de siete días para estudiantes nuevos. Obtén acceso a miles de horas de contenido y únete a miles de
Inicia tu prueba gratuita
Jason Swoboda
JavaScript Full Stack Estudiante de Techdegree 1.525 Puntos¿Cómo estás llamando value() como una función dentro de randomRGB(value) si no es una función?
Dentro de la función randomRGB(value), defines la variable const color como una plantilla literal que interpola el argumento value, pero añades () lo que la hace parecer una función.
¿Cómo funciona esto?
Steven Parker
244 163 puntosTony Shangkuan - siempre crea una pregunta nueva en lugar de hacer una pregunta como comentario o respuesta a otra pregunta, ya que esto generalmente solo será visto por el autor original y los que responden.
Veo que hiciste esto como una pregunta separada, puedes ver mi respuesta allí.
4 respuestas
Steven Parker
244 163 puntosCuando se llama a randomRGB en el programa principal, el argumento que se le pasa es randomValue, que es el nombre de una función. Entonces, durante la función randomRGB, el nombre del parámetro "value" es igual a "randomValue", lo que significa que pueda puede ser llamado como una función.
Cuando una referencia de función se pasa como argumento a otra función, esto a menudo se denomina "callback".
Charles Sok
Desarrollo Web Front End Graduado de Techdegree 13,226 Puntos¿Cómo se está pasando el argumento randomValue a él? Entiendo que está obteniendo ese valor, solo no entiendo qué hace que randomRGB reciba el randomValue que se le pasa. Para mí parece que sería un bucle roto de value intentando dar a los otros tres valores un valor de value. Llevo en este video aproximadamente 5 horas y me está haciendo cuestionarme si puedo terminar este curso.
Steven Parker
244 163 puntosQuizás esto ayude:
const randomValue = () => Math.floor(Math.aleatorio()*256);
función valores randomRGB(valor) {
// ^^^^^
// Este nombre de parámetro (value) se convertirá en
// una referencia a la función randomValue.
const color = `rgb( ${valor()}, ${valor()}, ${valor()} )`;
// ^^^^^^ ^^^^^^ ^^^^^^
// Cada llamada a value() será en realidad
// una llamada a randomValue() y será
// reemplazada por un número.
return color;
}
para (let i=1; i<=10; i++) {
html += `<div style="background-color: ${valores randomRGB(randomValue)}">${i}</div>`;
// ^^^^^^^^^^^
// Aquí, randomValue se está pasando como argumento.
// Esto pasa una REFERENCIA a la función pero no la llama.
}
Charles Sok
Desarrollo Web Front End Graduado de Techdegree 13,226 PuntosSteven Parker Entonces, cuando añadimos el (randomValue) en la parte inferior, entonces pasa su argumento al randomRGB anterior. ¿Por qué no añadir este argumento desde el principio en lugar de (value)? ¿Es algo que aprendimos antes y simplemente no lo estoy entendiendo?
Steven Parker
244 163 puntosNo estoy seguro de entender la pregunta. Por favor, muéstrame cómo se vería el código si "añades este argumento desde el principio".
Charles Sok
Desarrollo Web Front End Graduado de Techdegree 13,226 PuntosNo importa, no puedo entender esto.
Steven Parker
244 163 puntosSi me muestras lo que estás preguntando con código, probablemente pueda explicarlo. Pero la idea básica es que cuando pasas un nombre de función como argumento, la función no se llama en ese momento. Pero cuando la otra función a la que se le pasó llama a su parámetro (añadiendo paréntesis al nombre), then se llama.
Derek Craig
JavaScript Full Stack Estudiante de Techdegree 3.318 PuntosCreo que la confusión podría ser que esta línea se parece a `randomValue parece una variable porque eso es lo que me confundió.
const randomValue = () => Math.floor(Math.random() * 256);
Entonces, randomRGB(randomValue) usa randomValue cada vez value() se utiliza.
for ( let i = 1; i <= 10; i++ ) {
html += `<div estilo=background-color: ${randomRGB(randomValue)}>${i}</div>`;
}
Tony Shangkuan
7,200 puntosTony Shangkuan
7,200 puntosTengo la misma pregunta:
function randomRGB(value) {
rgb (${value()}, ${value()}, ${value()},)return color;Mi pregunta es que no se ha creado una función value() y ¿cómo funciona value() en este tipo de situación?