最初の1回だけエラーになるのは、
初期値が入っていないのかも?

b
a=b
宣言だけして、初期化しなかった変数を使ってエラー

b=0 などと宣言と同時に、初期値が入っていれば、
エラーは起きない