Js_of_ocaml takes lowlevel bytecode from OCaml compiler, BuckleScript takes the highlevel rawlambda representation from OCaml compiler
Js_of_ocaml focuses more on existing OCaml eco-system(opam) while BuckleScript's major goal is to target npm
Js_of_ocaml and BuckleScript have slightly different runtime encoding in several places, for example, BuckleScript encodes OCaml Array as JS Array while js_of_ocaml requires its index 0 to be of value 0.
Both projects are improving quickly, so this can change in the future!
I don't claim to be knowledgeable with OCaml, but I use it on and off since a couple of years and wrote about my thoughts when it was first released[0]. tl;dr: don't like the syntax, for the most part it's worse than OCaml itself. The rest is alright and helps the OCaml ecosystem as well, the focus on better tooling is good.
I know it's dumb that the thing holding me back from OCaml is the syntax, but after giving up on an Om project I've come to accept js will always be the greatest common denominator.
As I recall, Reason is the current project of React originator Jordan Walke and React contributor Cheng Lou. I wouldn't be at all surprised to see a Facebook project emerge that allows you to author React apps in Reason with Bucklescript.
Also plugging Websharper (http://websharper.com/) which is a full web framework that includes a F# to JS compiler to write the client-side part of the code.
Though you can use just the compiler inside a regular ASP.NET MVC project, if you so choose.
It's probably worth elaborating your opinion here. I've used ClojureScript heavily and feel I have a good sense of the comparison, but someone else reading your comment wouldn't be any better informed for it.
I'm genuinely curious as to your comparison though, would love to read it!
Another reason for it being "much easier to integrate with existing JS code" is strict evaluation.
Haskell is lazy, which means using GHCJS to compile it to JS produces code full of explicit thunks (think of promises). Both Elm and PureScript are compile-to-JS-languages that inherit a lot from Haskell, but not it's laziness.
You should give one of the OCaml languages a try. OCaml or F#. They have some very pleasant properties.
Generally this whole idea would make sense when you are writing a web application and you are using OCaml or F# on the server and want to use it for the client code too. Same justification for using node.js, but in reverse.
But I know that the Ionide plugin for Atom and VSCode is written in F# compiled to javascript just because the developers like to code in F#