ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
JavaScriptに3種類ある変数・定数宣言のうちの一つで、関数スコープまたはグローバルスコープの変数を宣言する。
var varname1 [= value1] [, varname2 [= value2] ... [, varnameN [= valueN]]];
カンマで区切って1行に複数の変数を宣言できる。また、それぞれで初期値の定義もできる。
varは英語のvariableの略で、意味は文字通り「変数」である。
JavaScriptにおいてvarは、その現れる場所と無関係にコードが実行する前に生成される。これはHoisting(巻き上げ)と呼ばれる仕様で、つまりvarで宣言される変数はそのスコープ内なら宣言前でも使うことができることを意味する。しかも残念なことに、JavaScriptでは定義のみが巻き上げられ初期化は対象にならないため、実際の宣言前に変数を参照するとundefinedが返される。
varはJavaScriptの初期から存在したが、この仕様は問題が多く(というか、問題しかなく)バグも招くため、JavaScript 1.7およびECMAScript 2015 (ES6) から代替としてletとconstが追加され、こちらに移行できるようになった。
かくして、以降のJavaScriptにおいては、varは使わないことが望ましい。
ブレンダン・アイク(Brendan Eich)により設計されたJavaScriptは、今となっては設計ミスだと言われるものも多々ある。その一つが、ブロックはスコープではない、という設計思想である。
変数は元々、varを付ければ関数スコープ、省略すればグローバルスコープとなるのが仕様である。関数内にブロックを書くことはできたが、ブロックスコープのための変数宣言は用意されず、つまりブロックはスコープではない、というのが元々のJavaScriptの設計思想だったわけである。
プログラムが小規模な範囲で収まっていればこれでも一種の制限として受け入れられたろうが、Webアプリケーションがどんどん大規模化するに従い、この仕様は問題でしかなかった。結果、ブレンダン・アイクが取れる解決策は一つしかなく、ブロックスコープで変数宣言をするための新しいキーワードを追加した。それがletである。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます