I get a kick out of all these votes, and everyone COMPLETELY ignoring:
If yes, why do you think so?
Pure comic gold right there.
Me? I actually bother ANSWERING questions instead of the drive-by TLDR mouth-breather approach.
Thing is that whilst JavaScript is CAPABLE of performing asynchronous tasks, it can ALSO be used for normal programming and is by its very nature SINGLE THREADED with linear execution. Sure you can hook events so that things run when they need to run, but just because a language is CAPABLE of it, doesn't meant that's all you can do with it.
If nothing else, that capability means it is EASIER to get the notion into people's heads that it's a thing as you can teach them conventional programming FIRST on the same language, then let them put on the big boy pants WITHOUT changing languages.
The same goes for OOP vs. Functional -- JS can "pretend" to behave functionally, but everything is an object. You can use either programming model easing the transition between the two... Unlike say JAVA which shoves OOP and only OOP down your gullet from day one!
Probably the only major failing is that if you learn asynchronous programming on JavaScript you do not have access to proper multithreading. All the implementation s are in fact single threaded / single tasked and inherently follow the "cooperative' model. If a section of JavaScript is already running on the page/thread, no other scripting for that page/thread can run until that section of code is released. This is bad for teaching proper asynchronous programming, but in many ways also acts as a safety net since if JavaScript was properly pre-emptive and multithreaded, then it would REALLY confuse the ever-living piss out of the greenhorns.