if(条件){処理1}else{処理2} 条件は判定され,true 又は false を返します。 条件に一致した場合(true の場合)→ 処理1が実行されます。 条件に一致しない場合(false の場合)→ 処理2が実行されます。 上記のスクリプトは 変数 hata に false を代入しています。 変数 henka に 関数を代入しています。 (変数は自由に名前を付けて作ることができます。一部使用できない文字や単語もありますが) 始めてこのページが読み込まれた時 変数 hata に false が代入されます。 変数 henka に関数が代入されますが,関数なので呼び出されるまで処理されません。 1度目の関数呼び出し時(クリック等 イベントハンドラ) if(!hata)は true と判定されます。! は等しくないという意味です。 if(条件)では true 又は false を返しますから,!true は false であり,!false は true となります。 !hata → !false → true 次の2つの処理が実行されます。 document.getElementById('hato').firstChild.nodeValue="秋田県も,"; hata=true; 2度目の関数呼び出し時 1度目の関数呼び出し時に hata は true が代入されています。 !hata → !true → false 次の2つの処理が実行されます。 document.getElementById('hato').firstChild.nodeValue="山形県は,"; hata=false; 以後,繰り返します。
参考