LoginSignup
1
2

More than 5 years have passed since last update.

C++とは異なる、JavaScriptのローカル変数のスコープ

Last updated at Posted at 2016-06-01

JavaScriptではローカル変数のスコープの仕組みがC++やJavaの感覚とは違うようなのでメモ。

if文やfor文にブロックスコープは無い

ブロックの外側からでも内側の変数にアクセスできる。

ブロックの外側からアクセスできる
for(var i=0; i<10; i++){
    var hoge = 1234;
}

document.write(hoge);    //表示:1234

if文やfor文だけではなく、関数以外の他の{}で囲まれたブロックにも同じことが言える。

変数宣言より前でも扱える

ローカル変数はその関数内の全ての場所で有効になる。

もし関数の真ん中で変数宣言をしていても
関数の先頭からその変数にアクセスできる。

function test(){

    i = 10;

    var i;

    document.write(i);    //表示:10
}

関数内で行われた変数の宣言は
全て関数の先頭に移動させられるといった感じ。

これが
function test(){

    document.write("Hello World !!");

    var xx = 1234;
    var yy = 555;

    for(var i=0; i<10; i++){
        var sum = xx+yy+i;
    }
}
こうなる感じ
function test(){
    var xx;
    var yy;
    var i;
    var sum;

    document.write("Hello World !!");

    xx = 1234;
    yy = 555;

    for(i=0; i<10; i++){
        sum = xx+yy+i;
    }
}
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2