変数や定数の違いについて

記事の内容

変数について

変数とは、データの入れ物の中身を入れ替える事ができます。
変数宣言にはlet命令とvar命令の2種類がありますので、違いについて見ていきましょう。

let命令[ES2015以降]

let命令は、データの入れ物につける名前宣言が
同名な時にエラーになります。

let命令に関しての説明図

let命令に関して

let msg = '初期値OK';
msg = '再代入OK';
let msg = '再宣言NG';

var命令

var命令は、データの入れ物につける名前宣言の
重複が許可され、重複時は上書きされます。

var命令に関しての説明図

var命令に関して

var msg = '初期値OK';
msg = '再代入OK';
var msg = '再宣言OK';

定数について

定数とは、入れ物と中身がワンセットになっており変更する事ができません。

const命令に関しての説明図

const命令に関して

const tax = '初期値OK';
tax = '再代入NG';
const tax = '再宣言NG';

データ型

データ型とは、データの種類の事です。

JavaScriptは型をあまり意識する事なく、変数に文字列や数値など格納する事が可能ですが
データ型を意識して変数を格納する事が重要になります。

例えばJavaScriptでは、以下のように文字列の後に数値を代入してもエラーにはなりません。

var x = 'こんにちは';
    x = 50;

しかし、型を意識しないで変数を作成するとバグの原因になりますので注意しましょう。

基本型(プリミティブ型)

種類説明
数値型数字を表す型
文字列型テキストデータを表す型
真偽型論理値を表す型
シンボル型一意の識別子を表す型
特殊型空か未定義を表す方

数値型(number)

数値型は、±4.94065645841246544×10⁻³²⁴〜±1.79769313486231570×10³⁰⁸の数値になります。

数値型(number)の説明図

文字列型(string)

文字列型は、シングルクォーと(‘) やダブルクォーと(“)で囲まれた0個以上の文字の集合です。

文字列型(string)の説明図

真偽型(boolean)

真偽型は、true(真)かfalse(偽)の事を言います。

真偽型(boolean)の説明図

シンボル型(symbol)

シンボル型は、全く同じシンボルが存在ぜず
プロパティのキーとして使用することで名前の衝突を回避することができます。

またJavaScriptの互換性を守るためにシンボル型が導入されました。

シンボル型(symbol)の説明図

特殊型(null/undefined)

特殊型は、値が空(null)か未定義(undefined)である事を示します。

特殊型(null/undefined)の説明図

参照型(オブジェクト型)

種類説明
配列順序付けて格納するデータ構造
オブジェクトプロパティと値のペアの集合体
関数一連のステートメントをまとめたもの

配列(array)

配列は、データの各要素にインデックス番号でアクセスが可能です。

配列(array)の説明図

オブジェクト(object)

オブジェクトは、データの各要素に名前でアクセスが可能です。

objectの説明図

関数(function)

関数は、一連の処理(手続き)の集合です。

数値リテラル

数値リテラルは、整数リテラルと浮動小数点リテラルに分けられ
整数リテラルは2進数・8進数・10進数・16進数の4種類の表現方法があります。

整数リテラル

整数リテラルは、10進数以外の時にJavaScriptが識別できるように頭に以下の特殊な表記をします。

2進数は0b(ゼロビー)
8進数は0o(ゼロオー)
16進数は0x(ゼロエックス)

整数リテラルの説明図

浮動小数点リテラル

浮動小数点リテラルは、小数点や指数表現を
表せます。

小数点・・・・1.25など
指数表現・・・3.14e4(3.14×10⁴)など

文字列リテラル

文字列リテラルは、
シングルクォーと(‘) やダブルクォーと(“)で
囲まれた0個以上の文字で表し
以下の表現はどちらも正しい表現になります。

'こんにちは'
"こんにちは"

特殊な表現方法

特殊文字とは、
シングルクォートやダブルクォート内で
特別な意味を持つ文字を使いたい時に以下の
[ \ + 文字 ]で表記します。

特殊文字に関しての説明図
console.log('こんに\nち\tは!\"');
出力結果

こんに
ち は!”

テンプレート文字列

テンプレート文字列とは、
以下の2点が文字列で可能になります。

テンプレート文字列の利点
  • 文字列へ変数が埋め込める
  • 改行を含んだ文字列

テンプレート文字列は[`]バッククォートで文字列を挟み、変数を${}内に記入する

※ ( shift + @ )でバッククォート

文字列へ変数が埋め込める

let name = 'トモジ';
let str  = `こんにちは、${name}さん!`;
console.log(str);
出力結果

こんにちは、トモジさん!

改行を含んだ文字列

シングルクォートやダブルクォート内では、
改行の際に特殊文字を使ったが
バッククォート内では通常の改行が認識されます。

let name = 'トモジ';
let str  = `こんにちは、
${name}さん!`;
console.log(str);
出力結果

こんにちは、
トモジさん!

配列リテラル

配列とは、
データの集合の事であり0から始まる
インデックス番号で管理されています。

変数名にインデックス番号をつけると
データを取得する事ができます。

配列リテラルに関しての説明図
var data = ['りんご','ゴルゴ','ラッパ','パンツ'];
console.log(data[1]);
出力結果

ゴルゴ

配列リテラル(入れ子)

配列は入れ子構造にする事が可能ですので、
例を見て見ましょう。

var data = ['りんご',['ゴルゴ','13'],'ラッパ','パンツ'];
console.log(data[1][1]);
出力結果

13

入れ子の入れ子も作れますが、あまり深くインデックスを作成すると管理が大変になります。

オブジェクトリテラル

JavaScriptでのオブジェクトとは、
ハッシュや連想配列などとも呼ばれ
名前をキーにして配列にアクセスできます。

配列のインデックス番号が名前に変化したようなもので、データの可読性や認識性が高いのが特徴です。

オブジェクトリテラルに関しての説明図
var obj = {name:'フランケンおじさん', birth:'1818年3月11日', mail:'franken311@sf.com'};
console.log(obj.name);
console.log(obj['birth']);
出力結果

フランケンおじさん
1818年3月11日

関数リテラル

関数とは、
何かしらの入力値(引数)を与えることによって
あらかじめ決めていた処理を行い、その結果を戻り値(返り値)として出力します。
※引数はなしでも問題ない

関数に関しての説明図
function getTriangle(width,height) {
   return width * height / 2;
}
console.log('三角形の面積:' + getTriangle(10,2));
出力結果

三角形の面積:10

未定義値とヌル

未定義値(undefined)

未定義値は、ある変数の値が定義されていない場合や存在しない事を表します。

var a;
var data = ['りんご','ゴルゴ'];
console.log(a);
console.log(data[2]);
出力結果

undefined
undefined

ヌル(null)

ヌルは、値がない事を意味します。
関数などで該当する事柄がない場合に
「該当する項目がありませんでした」と言う事を示すためにnullを返します。

記事の内容
閉じる