Smalltalk’s IDE is designed from the ground up for live coding. It’s very convenient and easy to use. While the program is running, you can pause execution, modify code, and resume execution. How do you do this in JavaScript? And is it convenient?
Smalltalk’s IDE also allows you to save the execution state of your program and resume execution later on at your convenience. Does JavaScript have the equivalent of a system image?
JavaScript is riddled with notorious WATs, the crazy-ass coercions that weak typing permits. Smalltalk is strongly typed, so no such free-wheeling coercions are possible. In fact, Smalltalk has no WATs that I’m aware of.
JavaScript can fail silently at runtime due to syntactical error. This is because of JavaScript’s very forgiving nature. In Smalltalk, all syntactical errors are always caught and cannot cause silent failure.
JavaScript’s “official” language definition, ECMAScript, is huge and complicated. This is nothing like Smalltalk’s language definition.
Smalltalk has arbitrary precision integers. JavaScript doesn’t even have integers (yet).
JavaScript’s automatic semicolon insertion is problematic. Smalltalk has no similar issue.
Syntax matters. IDE matters. These two things define the very nature of Smalltalk. JavaScript is nothing like it.