Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialStephen Cole
Courses Plus Student 15,809 PointsAn observation...
This isn't really a question. It's more of an observation.
This statement doesn't really do anything.
const random255 = () => Math.floor(Math.random() * 255);
If I print the value of random255
to the console:
console.log(random255);
I get this: () => Math.floor(Math.random() * 255)
.
It does not become a function until the ()
are added.
This is what let Guil pass the inner workings of the function as a variable to another function and then run them multiple times independently.
I didn't understand why passing one argument resulted in three different numbers.
Fascinating!
1 Answer
Steven Parker
231,268 PointsIt is a function, but it is not invoked ("called") until you add the braces. When you pass a callback, you don't want to invoke it yet, you only want to pass the function by name so the other function you pass it to can do the calling later.
The statement that didn't seem to do anything actually defines the function. It could also be written like this:
function random255() { return Math.floor(Math.random() * 255); }
Does it make more sense now?
Stephen Cole
Courses Plus Student 15,809 PointsStephen Cole
Courses Plus Student 15,809 PointsI think you misunderstood my comment.
I think that it's interesting how the variable
random255
stores the code of the function instead of invoking a function three times.He could have created--as you did--a function and then called it three times. Instead... by passing the variable with code inside it. He added the
()
to make it become a function.console.log(random255);
returned the code
() => Math.floor(Math.random() * 255)
console.log( random255() )
ran the function.
Guil created a function and passed the value of the arrow function expression multiple times.
Sort of like
colors(random255)
and then, in the function usedrandom255()
to invoke it as many times as needed.I just thought it was interesting.
Steven Parker
231,268 PointsSteven Parker
231,268 PointsWhat might you have done instead?