クロージャがどうこう

Javascriptクロージャの例として、こういったソース片をよく見る。

function makeClosure() {
    var n = 0;
    return function() {
        return n++;
    }
}

これは便利!っておもうか、これは危ない!と思うか…。ほいほいリファレンスがとれるのは、危ないんじゃないか(特にマルチスレッドで動いたときに)と最近思うのですがどうなんでしょう。
どっかにOCamlじゃかけないとか書いてあった気がするが、そんなことない。

let make_closure () =
  let n = ref 0 in
  fun () ->
    let n' = !n in
    n := n' + 1; n'

やっぱり、書き換え可能なのか不可能なのかは区別した方がいいよね。
そういや、Javaはconstが予約語らしい。最近知った。将来的にconstメソッドとかできるんだろうか。それとも、単に間違い防止?