Instead I would just say that the ES6 part need to be refactored to not need extra knowledge
ES6 syntax is useful during the Basic Data Structures section
If anything, IMO ES6 should be placed further toward the start and merged into the first section. I’m not convinced it still makes sense to split JavaScript syntax into “ES5 [and before]” vs. “ES6 [and later]”. It’d make more sense to teach the syntax that will run natively in all modern browsers (second- or third-latest versions of Chrome, Firefox, Edge, Safari, Opera, including mobile versions) and then also teach about transpiling with Babel, polyfills, ES versioning, and legacy browser compatibility as a supplement to that.
Of course browser compatibility is important, but it’s more reliable to handle it in an automated way, rather than trying to keep an endless list of arbitrary-seeming rules in your head.
At the very least we should be pushing var
off to the deprecated edges and introducing arrow functions right after anonymous function ()
syntax. I think class
syntax could possibly wait til after the existing OOP section, since currently class syntax is still a fairly leaky abstraction (“wait, why is class Foo {}
a function? Why do I have to use new
with it?” etc).
As it is, challenges already use let
long before it’s introduced in the ES6 section.
I finished the Basic JavaScript section and moved on to ES6, expecting the same pace of progression. Instead I feel like the curriculum has leapfrogged ahead and is making all sorts of references to things never covered before. For example, the lesson “ES6: Write Higher Order Arrow Functions” makes use of map()
, filter()
, and reduce()
functions, which we have never seen before and the lesson does not explain. I’m trying to go to the Web to understand those functions so that I can proceed with the lesson. Frustrating.