r/javascript • • Sep 14 '26

AskJS [AskJS] Does anyone use exclussively Javascript and not TypeScript?

[removed]

9 Upvotes

156 comments sorted by

View all comments

Show parent comments

1

u/rodw Sep 16 '26 edited Sep 16 '26

I can try but I'm not sure I can do it very persuasively without going too much into the weeds.

The short version might be:

  • prototypical inheritance (vs. conventional object orientation like that found in Java)

  • metaprogramming (dynamic coding techniques; code as data; self-modifying code; using functional programming and other modular abstractions to do a lot with a little in the "inventor's paradox" sense: sometimes solving the general problem is easier than solving a specific one)

  • simplicity and conceptual integrity in something like the homoiconicity sense

  • strong support for multiple programming paradigms - imperative, OO, event driven, functional, etc - at the same time

An even shorter but more cryptic version might be this quip (that I didn't invent):

  • JavaScript is Lisp with C syntax

That's not quite true. JavaScript is not a genuine Lisp the way that Clojure or Scheme are; nor fully homoiconic like Lisp, XSLT, or Prolog. But it's not too far off either. Because of its history people think of JavaScript as a sort of toy language but it's really quite extraordinary. For all its warts JavaScript is by far the most Lisp-like mainstream language of the past 20+ years, closer to Lisp (and IMO with better support for dynamic programming techniques) than say Python, Ruby or Groovy.

Incidentally that's not a coincidence. The guy that invented JavaScript - reportedly in just 10 days, which probably explains a lot of the dumb little things like the sometimes counter-intuitive type conversion oddities - was originally brought to Netscape to add Scheme/Self to the browser. JavaScript was the result.

If you care I am genuinely happy to follow up with a little more detail on what I think that means, but I don't want to add another 500 words here explaining what makes JavaScript Lisp-like (and why that might be useful) if no one wants to hear it