@ JavaScript

variables:変数

変数は値に関連付けられる名前です。変数に値を関連付けることを、変数に値を代入するとか、値を格納するといった言い方をします。

次の例では、変数 name に Yamada を代入しています。

variables_01

<!DOCTYPE html>
<html lang="ja">

<head>
<meta charset="utf-8">
<title>sample</title>
<script>
var name = "Yamada";
alert(name);
</script>
</head>

<body>
</body>

</html>

demo

変数の型

Java や C などのプログラミング言語と JavaScript には大きな相違点があります。それは、JavaScript には変数の型という考え方がないことです。

変数に数値を代入した後で、同じ変数に文字列を代入することも可能です。

variables_02

i = 10;
i = "ten";

変数の宣言

変数は、その変数を使う前に宣言しなければなりません。変数はキーワード var で宣言します。

variables_03

var name;
var age;
name = "Yamada";
age = 32;

宣言の際、同時に初期値を設定することもできます。

variables_04

var name = "Yamada";
var age = 32;

一行にまとめて宣言することもできます。

variables_05

var name = "Yamada", age = 32;

宣言をした後に代入することもできます。

variables_06

var name, age;
name= "Yamada";
age = 32;

変数のスコープ

プログラムの中で変数の有効範囲を変数のスコープと言います。グローバル変数のスコープはプログラム全体で、ローカル変数のスコープはその変数が宣言された function(関数)の中に限定されます。

scope_01

var scope = "global";
function checkscope(){
  var scope = "local";
  document.write(scope);
}
document.write(scope);
checkscope();

グローバル変数の場合は var を省略できますが、ローカル変数は var を使って宣言しなければなりません。

scope_02

scope = "global";  // var を省略してグローバル変数を定義
function checkscope(){
  scope = "local";  // グローバル変数を再定義
  document.write(scope);
  myscope = "local";  // 新たなグローバル変数を定義
  document.write(myscope);
}
checkscope();  // locallocal
document.write(scope);  // local
document.write(myscope);  // local

ブロックスコープは存在しない

var で宣言した変数はブロックスコープを持ちません。ブロック内で宣言された変数は、それを含む関数またはスクリプトがスコープとなり、変数の有効範囲は、そのブロック自体を超えて持続します。

scope_03

if (true) {
  var str1 = 'abc'; 
}

for (var i = 0; i < 3; i++) {
  var str2 = 'efg';
}
console.log(str1);  // => 'abc'
console.log(i);     // => 3
console.log(str2)   // => 'efg'