The "js support" called UnityScript in old versions of Unity is horrible. Avoid it like the plague. It's not actually JavaScript, just a thin wrapper around the Mono runtime. So instead of standard JavaScript array.push(obj), you have to use C# APIs like array.Add(obj). And there are all kinds of other incompatibilities too. It's totally incompatible with all known JavaScript tools and libraries, and definitely won't run the output of the TypeScript compiler. So you can be sure that code written for the browser will definitely not work, and don't even try to port JavaScript libraries to it.

Not only that, but it's also a compiled language, so has none of the advantages of being able to reload instantly without recompiling for half an hour, or using the excellent JavaScript debuggers built into every web browser to debug and interacting with the code with the console in real time while it runs on the actual device.

It's a very good thing that Unity took UnityScript out back behind the woodshed and shot it (along with "Boo", which was to Python as UnityScript was to JavaScript). It wasn't doing anyone any good, and it was a huge burden for Unity to maintain. People who already knew JavaScript but didn't want to learn C# were screwed because it wasn't really JavaScript so their knowledge didn't apply and their time learning it was wasted, and it prevented or delayed them from learning an excellent language like C#, which they should have done in the first place.

C# has its place, but it's never going to be as quick to reload and run, and as easy to debug and use interactively, as JavaScript.

Another enormous advantage to using off-the-shelf honest-for-goodness authentic JavaScript instead of almost-but-not-quite-entirely-unlike-JavaScript, is that you can easily use all the latest and greatest JavaScript libraries off-the-shelf without any modification. Then you can actually hire somebody who already knows how to use those libraries, too.

A great example is SocketIO (but there are MANY other examples). You can just use the latest standard JavaScript library without modification, instead of desperately shopping around for an adequate C# imitation, finding it only runs on Windows, trying and failing to port it to Unity, finding three different attempts by other people to port or reimplement the same library in Unity that failed and aren't maintained or don't work in the current version of Unity or are incompatible with the WebGL/WebAssembly runtime, and finally spending the time to roll your own, which quickly goes obsolete because you're the only one supporting it.

It's MUCH better to be able to simply drop in the latest version of SocketIO, or the Stripe API, or D3, or whatever you need, and go to town drawing all kinds of graphs and diagrams by copying and elaborating the great examples on observablehq.com, then use those html canvas images on Unity3D textures of 3D objects and user interface overlays, instead of foolishly trying to reimplement D3 in C#.

UnityJS also makes it very convenient to develop hybrid wen apps that are partly Unity3D/WebAssembly/WebGL, but deeply integrated with HTML/JavaScript, so they can send structured messages and data back and forth (including bit-blitting images and buffers of numbers across instead of serializing/deserializing them), and do the text and user interface in HTML/CSS/SVC along side or in overlays, using Angular or React or whatever you like.

Hybrid Unity/Web apps are useful, because Unity doesn't have a decent immediate mode 2D drawing API like canvas or D3, or a decent text/graphics layout engine like HTML/CSS/SVG. (I love TextMeshPro, but it just isn't capable of everything that's so easy to do in HTML, or able to leverage higher level HTML templating or formatting or graphics libraries, or even form inputs. And writing a Unity shader or constructing a dynamic 3D mesh to draw a pie chart is such a silly overkill, when you can do it so easily with canvas or D3.)