ホーム » T-Saitoh » 変数のスコープと寿命

システム

最近の投稿

  • 日立洗濯機API
    日立の洗濯機は WiFi で接続できるので、nmap をかけてみたが、反応なし。 でも何気なく「日立 洗濯機 […]
  • iPhoneバッテリー交換サービス
    AppleCare 入ってたっけ? AppleCare入ってたっけ? 無償って出てるし、予約してみた。 […]
  • curl で switchbot API v1.1 を呼出す
    Amazon タイムセールで、SwitchBot CO2 センサー付き温湿度計の割引がでていたので、Hub […]
  • Windows 11 Upgrade できるようになった!?
    とっくの昔に、Win11 Upgrade不可能と診断されてたんだけど、なんで今頃 Upgrade […]
  • 文殊山
    最近、運動不足のなか、熊ニュースも多くて山ハイキングができてなかったけど、今シーズン最初の文殊山。 […]

アーカイブ

カテゴリー

変数のスコープと寿命

処理を2重で繰り返す場合、以下のようなプログラムを書くだろう。

var x , y ;
for( x = 0 ; x < 3 ; x++ ) {
   for( y = 0 ; y < 2 ; y++ ) {
      document.write( "A" ) ;
   }  
}

でも、大きなプログラムを書いていると、変数名をつけるのに悩む場合もある。

var x ;
for( x = 0 ; x < 3 ; x++ ) {
   for( x = 0 ; x < 2 ; x++ ) {
      document.write( "A" ) ;
   }
}

かといって、このプログラムは、3✕2回のループにはならない。
同じ名前でも、別な変数を作ることができる。

for( var x = 0 ; x < 3 ; x++ ) {
   :
}

for文のカッコの先頭(初期化式)の部分には、変数宣言を書いてもいい。この変数は、for 文が終わるまでの間有効となる。

forの初期化式の時点で x が作られ、for 文が終わると消える。

つまり、変数が使える範囲(スコープ)は、for文の中だけ。寿命はfor文に入って抜けるまで。
これを使うと、前述のプログラムは、

for( var x = 0 ; x < 3 ; x++ ) {
   document.write( "#A x=" + x + "<br />\n" ) ;
   for( var x = 0 ; x < 2 ; x++ ) {
      document.write( "##B x=" + x + "<br />\n"
   }
   document.write( "#C x=" + x + "<br />\n"\n" ) ;
}
実行結果
#A x=0
##B x=0
##B x=1
#C x=0    ←内側のforが終わり、内側のxは消えて、外側のxが見える
#A x=1
##B x=0
##B x=1
#C x=1
#A x=2
##B x=0
##B x=1
#C x=2

Google 検索

My Google   Yahoo

Microsoft

ファンサイト