変数 |
変数って何? var, let, const の使い方 変数はオブジェクトである 変数の七変化 グローバル変数・ローカル変数 |
変数って何? 変数とは数学で習った変数xなどを思い出すのではないでしょうか。しかし、 もっと広い意味で使われています。文字列も変数で扱えます。 変数とはデータの入れ物です。以前は、 var a = 123; これだけでした。現在では、 var, let, const 3つの変数宣言の仕方があります。面倒ですね。 |
var, let, const の使い方 constは一番わかりやすいです。例えば、円周率のように一度セットしたら 与えを変えられない定数で使います。
pi = 8;Uncaught TypeError TypeError: Assignment to constant variable. になり console.log(pi); は実行されずに終了してしまいます。constはわかりやすいですね。 次にvarはお馴染みです。こんなあいまいなコードは書かないと思いすが、
結果は、
となります。内側のループが5回、外側のループが1回になっています。内側のループ終了後にiが6になっているので外側のループが1回だけになります。 内側のループをlet i=0にすることで、期待していた(?)結果になります。
letでiを宣言すると外側ループのiと内側ループのiは別物ということになります。宣言したデータの有効範囲(スコープ)は、以下の通りです。 var 関数スコープのローカル変数を宣言とある値に初期化することもできる。 let ブロックスコープのローカル変数を宣言とある値に初期化することもできる。 const ブロックスコープで読み取り専用の名前付き定数を宣言する。 |
変数はオブジェクトである なんかよくわからない記述ですが、C言語と比べるとわかりやすいと思います。 int a = 1; と宣言して表示のためにchar型にするには、 itoa(),sprintf()などの関数を使ってchar型の文字列を取得します。 しかし、JavaScriptでは変数はオブジェクトなのでオブジェクトを操作する メソッドが実装されています。 a.toString(); でString型のデータを取得することができます。 更に、関数もオブジェクトなので、
このような記述ができます。 |
変数の七変化 JavaScriptにおける変数はバリアント型です。
数値で宣言されたaに文字型データを代入してもエラーになりません。
バリアント型になっています。これは便利なようで弊害があります。
本当は数値のデータなのに誰か文字型で書き換えてもエラーになら
ないので、書き換えた人は問題なしと思うでしょう。しかし、この
書き換えで別の処理に不具合が発生することがあります。C言語の
ようにコンパイル時にエラーがでれば、間違ったデータを使って
いることがわかります。バリアント型は便利なようで危ない側面を持っています。 |
グローバル変数・ローカル変数 グローバル変数(広域変数)は、すべての関数で有効です。 例えばシステムの設定値などによく使われます。 ローカル変数(局所変数)は関数内だけで有効です。
aはグローバル変数。bはローカル変数です。期待通り 3.14と1.14が表示されます。
これでも期待通り 3.14と1.14が表示されます。
undefinedと1.41が表示されます。つまり変数aが未定義状態です。
変数を各場所は上の行に書いておけば無難です。初期化しないと、
同様にundefinedと1.41が表示されます。
|