ES6 Higher Order Arrow Functions Lesson Too Confusing

I’ve just started this lesson and believe it makes several jumps of complexity that make it almost indecipherable for someone who’s new to studying JavaScript.

I’m referring to the lesson: ES6: Write Higher Order Arrow Functions.

Up to this lesson, the ES6 lessons have progressed in uniform complexity, with each lesson building upon the last and using concepts previously covered in the FCC curriculum.

For example, the lesson immediately previous: ES6: Use Arrow Functions to Write Concise Anonymous Functions, builds upon the concept of const and introduces a new way to write anonymous functions. Anonymous functions are something previously seen in the curriculum, and although not explicitly defined before (AFAIK), this lesson explains quite clearly that they are common when passing functions as arguments to other functions.

However, in the next lesson, the one I originally referred to, we are introduced to higher order functions without an explanation of what these are. While some students will be able to infer what they are from the examples, like map(), filter(), etc, there should be a more explicit explanation.

Furthermore, one of these higher order functions, filter(), is used in example code, but it is not explained what this function’s purpose is.

The lesson’s exercise asks the student to write an arrow function to calculate the square of positive integers within an array, and store the output in a new array. The previous lessons are insufficient to prepare the student to complete this exercise.

It turns out, from looking at the solution page, that both filter() and map() are required to complete this exercise, but again, these functions are never explained. It’s clear that the student must do his/her own research into these functions, but this breaks the mold that most of the non-project exercises have taken, where everything required to complete the exercise has been found in previous lessons.

My suggestion is that this lesson be broken down into several smaller lessons to introduce key concepts required to finish the exercise, such as what the higher order functions do, the syntax for multiple lines of code within an arrow function, how to chain arrow functions, and anything else deemed necessary (I have yet to complete this exercise).

2 Likes

After doing a bit of research, including on Google and Youtube, I actually found this incredibly helpful FCC Youtube video that explains very clearly the concept of arrow functions and their applications vis a vis higher-order functions.

Perhaps this should be linked on the lesson page for those like myself who were confused by the lesson.

2 Likes

If you check the beta version of the curriculum (FreeCodeCamp.rocks) you will find that this challenge has already been changed, you may want to update your feedback based on that

You may also be interested in this for how the curriculum will evolve:
http://forum.freecodecamp.org/t/help-us-build-version-7-0-of-the-freecodecamp-curriculum/

3 Likes

This revised lesson is actually much better at explaining what’s going on. Thanks for the heads up.

1 Like