var
varは初期値を与えずに宣言だけすると、最初はundefinedの状態。
var x
console.log(x) // undefined
var x = 10 // 初期値を与える例1
console.log(x) // 10
var x = “abc” // 初期値を与える例2
console.log(x) // abc
varは毎回新しく変数を宣言する。
{}の中に書こうが外に書こうがどこかで変数宣言しておけばいいというものではない。繰り返し処理を行う`for`の中などに書いてしまうと、繰り返しが機能しない。
なぜなら、varで宣言した時点で毎回新しい変数として処理が行われるから
// {}の外で宣言する場合
var result=1
for(var i=0; i<10; i++){
result+=2;
}
console.log(result)
これだと、1周目でまず1+2となり3。
2周目で3+2となり5、
3周目では5+2となり7、、、と条件範囲内でループ処理が続いていく。
一方、
// {}の中で宣言する場合
for(var i=0; i<10; i++){
var result=1
result+=2;
}
console.log(result)
とすると、
1周目で1+2で3となったところで2周目に突入するのだが、
ここでvarの宣言が入ってくるのでまた新しく上書きして仕切り直してしまう。
つまり、毎回1+2=3というループを繰り返していき、
一向に引き継がれていかないことになってしまう。