>>404
let を最初に使ったのは Lisp だろ
Lisp の let は新しいスコープを作り、そのスコープに変数を束縛する
スコープに束縛された変数は、再代入可能だし、初期値も必須では無い

最近の関数言語でも概念的には一緒だと思うんだけどね?
関数言語 let a = 1 とかした場合、これは a に 1 を束縛しているのではなくて、スコープに変数 a を束縛してその値を 1 にしている
そして >>411 が言ってるように、関数言語の場合は変数が再代入不可能だから a の値が 1 固定になる