※社内専用

【Education】JavaScriptの変数と型

変数とは

プログラム中の値を保持して置くためのものです。 処理結果などの値を変数に格納したり、それをまた別の処理へ引き渡したりすることができます。

わかりやすく例えると変数とは箱です。 変数宣言を行うことで箱を新規で生成し、値を箱の中に格納するイメージです。

'var'は'variable'の略となり日本語訳で「変数」という意味合いなので、そのまんま「これはこの名前の変数です」と宣言するわけです。

var 変数名 = 値;  //変数に値を格納
var 変数名;  //変数宣言
var 変数名1, 変数名2, 変数名3;  //複数の変数をまとめての宣言も可能

変数には計算式や配列(複数の値)を格納することもできます。

var i = 1 + 2;  //計算後の値がiに代入 => i=3
var array = [1, 2, 3, 4, 5]  //配列を代入

letとconst

ECMAScript2015で追加された仕様に変数定義の見直しがありました。 ECMAScript(エクマスクリプト)とは標準化されたJavaScriptのバージョンのことを指します。

letは再定義が不可能、constは再定義と再代入が不可能となります。 これにより誤って二重定義してしまうのを防ぐことができます。 また、varとletは変数宣言のみができることに対して、constは必ず定義と代入を同時に行う必要があります。

現在はletとconstで定義することが推奨されています。 ひとまず定義に悩んだらletにて宣言をして下さい。

let name = 'epress';
const NAME = 'EPRESS';

型とは

値の種類です。 javascriptの型には下記の7種類が挙げられます。

  • number (数値) …整数や小数
  • string (文字列) …""で囲うと数値も文字列として扱われる
  • boolean (真偽値) …true(真)/false(偽)
  • undefined (未定義) …定義がされていない
  • null (空) …有効な値が存在しない
  • object (オブジェクト)
  • symbol (ECMAScript2015の追加機能)

数値・文字列・真偽 (基本型)

数値とは整数、小数、進数などの数字の羅列です。 計算式を代入することもできます。

文字列とは以下のように '' (シングルクォーテーション)や "" (ダブルクォーテーション)で囲まれた文字の羅列のことです。 数値も''か""で代入をすると文字列として認識されます。

真偽とは論理型とも呼ばれ正しいか(true)、間違っているか(false)を代入します。

// 数値
let num = 1
let inf = Infinity;  // 正の無限大
 
// 文字列
let str = "hello,world";
let str2 = '12345';
 
// 真偽
let boolean = true;
let boolean2 = false;

undefinedとnull (基本型)

nullは宣言時に代入するものではなく、処理によって取得したい値が見つからなかったときに意図的に代入される値になります。 主に変数に値が存在するかどうかの判別などに使われることが多く、下記のような条件分岐によくみられます。

if (epress === null) {  // epressの値がnullの場合true
  console.log(epress);  // => null
}
 
if (epress == null) { // epressの値がnullまたはundefine場合true
  console.log(epress);  // => null または undefined
}

オブジェクト型

上記で説明している基本型と言われるもの以外をオブジェクト型と呼びます。 オブジェクトとはプロパティの集合体であり、プロパティには上記の基本型やオブジェクトを格納することができます。 配列や関数などもオブジェクト型となります。

let obj = new Object();  // オブジェクト型の生成と代入
let Arr = ['aa', 'bb', 'cc'];  // 配列の代入
let func = function(){...};  // 関数の代入

symbol(ECMAScript2015)

ECMAScript2015で導入され、Symbol()で作成できる特殊な値を生成する新しいプリミティブです。

今までオブジェクトのプロパティ名は必ず文字列でしたが、シンボルをプロパティのキーにすることができます。 普段使用する機会はあまりないので、こういう値もあるって認識だけで大丈夫かと思います。

let obj={},
    s=Symbol();
obj[s]="epress";