「JavaScript/変数」の版間の差分

削除された内容 追加された内容
訂正。数値変数は number型
M編集の要約なし
1 行
変数 ({{lang-en-short|variable}}) は、データに名前をつけることができる機能です。
 
JavaScriptの変数は<code>var</code>、{{code|let}}、{{code|const}}キーワードで宣言します。なお、英語で、数学の用語ですが変数(へんすう)のことを variable (バリアブル)といいます。Varの読みは特に決まってないので、「バル」とか「バー」とか読めばいいと思います。
 
== 変数の自動判定 ==
10 行
 
<syntaxhighlight lang="html5">
<meta charset="Shift_JIS">
<script>
// x の 2 乗を計算
 
var x = 2;
// x + 23 を計算
 
document.write(x +* 3x);
</script>
</syntaxhighlight>
 
このようなコードなら、ブラウザが自動的に「2」は数値、xは変数だと判断します。(そもそも変数名に、数値だけからなる文字列は使えない。)
たとえば {{code|var 5 {{=}} 2;}} (「5」を変数として無理やりに使おうとしている。もちろんマチガイ)みたいな表記は禁止されている。
 
 
38 ⟶ 35行目:
 
-->
2+3*254ですので、ブラウザ画面には「54」と表示されているハズです。
 
 
45 ⟶ 42行目:
 
<syntaxhighlight lang="html5">
<meta charset="Shift_JIS">
<script>
// x + 2 乗3を計算
 
var x = "2";
56 ⟶ 52行目:
 
とすると、今度は文字「2」のうしろに文字「3」を連結した結果「23」という表示になります。
 
 
 
65 ⟶ 60行目:
<syntaxhighlight lang="html5">
<script>
var suujimoji = '5'"2";
var kazu = 13;
 
document.write( parseInt(suuji) + parseInt(kazu) ); // 数値計算 52+1=63 の結果の「65」を表示
</script>
</syntaxhighlight>
80 ⟶ 75行目:
-->
 
のように書きます。これなら、文字列型で宣言された「52」を数値に置き換えるので、足し算 52+13 の結果の「65」が表示されます。
 
 
149 ⟶ 144行目:
 
== 変数名 ==
JavaScriptの変数名には英数字、半角カナ、アンダースコア(_)、ドル記号($)、日本語圏 (JavaScript 1.5から)の文字が使用できます。大文字・小文字は区別されます。
 
* ABCDEFGHIJKLMNOPQRSTUVWXYZ
* abcdefghijklmnopqrstuvwxyz
* 0123456789
* ひらがな
* アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン
* _
* $
163 ⟶ 158行目:
var primeNumber = 57; // OK
var prime_number = 57; // OK
var prime-number = 57; // SyntaxError、ハイフンは変数名に使えない
</syntaxhighlight>
 
変数名には[[Java]]と同様、慣習的に<code>var variableNamesLikeThis</code>のような[[:w:キャメルケース|キャメルケース]]が用いられます。どうでもいい変数は<code>var string</code>よりかは<code>var str</code>、あるいは<code>var s</code>のように、気楽に略語が用いられます(外部に公開するメソッド名には略語はあまり用いられません)。
 
<code>var hoge</code>のようなローマ字の変数名は非日本語話者にとって意味不明になるため、グローバル化の時代にあっては推奨されません。文法は適当でもいいので、変数名は必ず<code>var foo</code>のように英語でつけるようにしましょう。
 
JavaScript 1.5からは日本語を含むUnicode文字、および<code>\uXXXX</code>形式のUnicodeエスケープシーケンスも変数名に使えるようになりました。これらは主にハックに用いられます。
176 ⟶ 169行目:
</syntaxhighlight>
 
{{anchor|const}}
== 定数 ==
定数(ていすう)は<code>const</code>キーワードで宣言します。
 
 
数学において、定数(ていすう、じょうすう)とは、変動しないで、同じまま値のことです。
 
 
367 ⟶ 361行目:
 
(function() {
var dream; // ファッ!?<--- 暗黙的な宣言の移動
 
console.log(dream); // undefined
381 ⟶ 375行目:
<code>var</code>にはこういった問題があるのですが、かといって「常に関数の先頭で全部の変数を宣言するようにし、途中で<code>var</code>を使わないようにする」というのでは、昔の[[C言語|C]]みたいで、あまりに退屈です。ハッカーは問題を解くのに適した言語を''作る''べきで、言語に人間が合わせるべきではありません。そもそもの問題は<code>var</code>がブロックスコープをもたないことにあるのだから、ブロックスコープをもつ<code>var</code>を発明するのが筋です。
 
{{anchor|let}}
==== let ====
<code>let</code>キーワードで宣言された変数はブロックスコープをもちます。さらに<code>for</code>文の条件式で<code>let</code>で宣言された変数は、<code>for</code>文のブロックの内側にしか見えません。