But first, a note on W3Schools
For a while, W3Schools had a bit of a bad reputation. Actually in researching for this article, I've found that its reputation still kind of persists. But it used to be a lot worse. I can't be the only one who remembers "W3Fools", a site that used to list out all the problems in various W3Schools tutorials. If you visit this site now, you can see that W3Schools has since fixed those problems and the site points out that it's a decent resource for learning nowadays.
Anyway, for this article we'll be going back to the days before that site went up, but I couldn't not mention that elephant in the room! Now with that out of the way, let's go over how W3Schools has changed!
Most languages are just called "programming languages" these days because I think the programming community has realized that programming in JS is just as "real" as programming in C.
In the modern version of the website, they just specify that they are two different languages and pretty much leave it at that, without putting down one language or the other.
Okay let's actually look at the tutorial content now
If I were to do a full play-by-play on every single difference between the 2005 tutorial and the 2020 tutorial, I'd be here all day, so I mainly want to focus on very specific examples from here on out. I strongly recommend you check out the 2005 tutorial on the Wayback Machine for yourself if you have the time.
When I initially thought about comparing the old to the new, the first thing that came to mind that would probably be different would be the usage of document.write in the old tutorial. If you check the tutorial it is filled with document.write calls whereas the newer tutorial typically uses more modern ways to output a string (typically by changing the innerHTML of an element on the page). However, I was surprised to see them still mention document.write on their modern tutorial, although their example is surrounded by warnings about how you should basically never do use it outside of testing.
A lot of the code uses it in ways that make me go "oh god... I personally would not do that today". Can you see what this code is doing, and could you ever see yourself doing something similar today?
Speaking of expected changes, I was curious about how modern W3Schools would handle newer keywords like let and const. In the 2005 tutorial, they use var as that was what was used at the time, however they also define a lot of variables with no keyword at all. That was pretty standard back then but... it is quite weird to see nowadays.
There are plenty of pages that haven't really evolved that much in the last decade and a half though. The "JS Operators" page in particular has very obviously evolved from the 2005 original, where some of the same tables from 15 years ago still exist, altered only slightly over the years.
Some random things I found and want to mention real quick
W3Schools also had a tutorial on WMLScript, which was for scripting web pages for pre-smartphone mobile devices.
Okay I have to talk about one specific part about the old JS tutorial on the boolean data type. They list out (almost) all the ways you can create a false value from the Boolean constructor:
While this wouldn't really be out of place if it were made in like, 2009, the download page for W3.js states that version 1.0 was released in January of 2018, although I found a StackOverflow question talking about it that apparently dates back to 2017.
I guess it's good for beginners, especially for those who aren't used to using code from external libraries, but W3Schools advertises the library as if its some widely-adopted, critical piece of technology. The name "W3.js" also sounds like the library is officially affiliated with the W3C, which it is not. I find the whole thing quite odd...
So, what's the take away from all of this?