One major problem with any JS-based language for number crunching is JS' lack of any numeric types other than a double.
I don't know how well the string-based workarounds really work, for arbitrary precision math ... but I'd imagine that they wouldn't be terribly fast or convenient. It's a real shame.
Current versions of Firefox and Chrome have typed arrays, which add more numeric types for performance optimization. Hopefully we will see them in other browsers soon: https://developer.mozilla.org/en/javascript_typed_arrays
It would need lots and lots and lots of work before I would call it a fantastic teaching tool. For example, it is spectacularly naive at plotting functions. Even a relatively simple function such as 1/sin(x) already brings it to its knees.