DESIGNMAP

  1. TOP
  2. 公開講座
  3. ゼロから始めるJavaScript入門
  4. データ型(基本型)、リテラルとは ー ゼロから始めるJavaScript入門(ECMAScript 2015)【Vol.3】

データ型(基本型)、リテラルとは ー ゼロから始めるJavaScript入門(ECMAScript 2015)【Vol.3】

データ型とはデータの種類です。JavaScriptの中では文字列や数値など様々なデータ型を扱うことができます。

基本型と参照型

データ型は基本型と参照型に分類できます。今回は基本型をまとめます。

基本型は以下のようなものがあります。

  • 数値型(number、5のような整数、1.25のような浮動小数点数、1e8のような指数表現)
  • 文字列型(string、シングルコォート、ダブルクォートで囲まれた文字の並び)
  • 真偽値型(boolean、trueもしくはflaseの値の2つだけをもつ)
  • undefined(undefined、値が未定義)
  • null(null、値が空)
  • シンボル型

参照型は配列(array)、オブジェクト(object)、関数(function)があります。参照型はそれぞれ専用の回を設けて解説します。

リテラルとは

データ型はリテラルと呼ばれる表記ができます。
リテラルとは、プログラムに直接記述するデータ値のことです。コードに書いた値が、そのまま実行時にもその値のまま意味をもちます。文章で説明すると難しいので、コードで説明します。

var name = "こんにちは";
console.log(name);

上記のコードですと、"こんにちは"がリテラルです。varはコードを解析するときにつかわれますが、実行時には意味をもちません。nameも変数名なので、違う変数名に変えても処理結果は変わりません。"こんにちは"値がそのまま意味をもちます

データ型のほとんどはリテラル表現をもっています。

数値型

数値型は数値です。
JavaScriptの場合、整数(0や5など)、浮動小数点(1.5)、指数表現(3.14e5)の区別をせず、すべて数値型として扱います。「3.14e5」とは、「3.14×105」の意味です。

数値型のリテラルはそのままの値を書くだけです。JavaScriptコンソールで試してみましょう。
>は入力欄、<-は出力結果を表しています。入力する必要はありません。

> 5
<- 5
> 0
<- 0
> 0xffffff
<- 16777215
> 0o312
<- 202
> 0b11
<- 3
> 1.5
<- 1.5
> 2e2
<- 200
> 3.14e5
<- 314000
> 3.14e-3
<- 0.00314

0xffffffは16進数、0o312は8進数、0b11は2進数です。JavaScriptコンソールにいれると、10進数に変換されたものが出力されます。

typeofでデータ型を調べると、numberと出力されます。

> typeof 10
<- "number"
> typeof 0.15
<- "number"
> typeof 3.14e10
<- "number"

文字列型

文字列型は文字を並べたものです。空文字("")も1文字しかない場合も文字列型です。文字列リテラルはシングルクォート、ダブルクォートで文字を囲みます。詳しくは「文字列型 ー ゼロから始めるJavaScript入門(ECMAScript 2015)【Vol.2】」をご覧ください。

真偽値型

真偽値型はtruefalseしかないデータ型です。
truefalseというリテラル値をもちます。

> true
<- true
> false
<- false

typeofでデータ型を調べると、booleanと出力されます。truefalseはブール値と呼ぶ場合もあります。

> typeof true
<- "boolean"
> typeof false
<- "boolean"

undefined

undefinedは変数の値が未定義を示す値です。変数が宣言されているけど、値が代入されていないときに返される値です。もしくは文が実行されたけど、処理結果の値が何も返されなかったときです。

> var num
<- undefined
>console.log("ok")
   ok
<- undefined

console.logを実行すると、「undefined」が返されます。つまり、console.logは処理結果の値を返さないのです。現段階で「処理結果の値を返す」戻り値の概念をまだ学習してないので、難しく聞こえます。戻り値は「関数 ー ゼロから始めるJavaScript入門(ECMAScript 2015)【Vol.9】」で説明します。

いまの段階でざっくりと知っておくことは、undefinedは、自分から代入することはなく、上記のように処理結果で返される時に遭遇します。undefinedに出会う時は、ほとんどのケースが意図しない時です。JavaScriptに慣れてくるとundefinedの扱い方にも慣れてきます。

typeofでデータ型を調べると、undefinedと出力されます。

> typeof undefined
<- "undefined"

null

nullは現段階で解説するのが難しいのですが、何も参照していない状態を示します。
リテラルはnullです。

typeofでデータ型を調べると、objectと出力されてしまう謎仕様なので、あてになりません。

> typeof null
<- "object"

nullは、変数に自分から代入して使う場合があります。

undefinednullは特殊なデータ型なので、おいおい分かれば十分です。現場でJavaScriptを書いている人でもundefinednullの違いを明確に説明できる人は少ないと思われます。

シンボル型

シンボル型は、一意の値をもつデータ型です。リテラル表現はありません。
使い方も特殊です。変数 = Symbol()と書いてシンボル型のデータを生成します。
typeofでデータ型を調べると、symbolと出力されます。

> var s1 = Symbol()
<- undefined
> var s2 = Symbol()
<- undefined
> typeof s1
<- "symbol"
> typeof s2
<- "symbol"

s1s2は必ず異なる値を持ちます。
s1と等しいのはs1のみです。

> s1 === s2
<- false
> s1 === s1
<- true

===は比較演算子のひとつで左右のデータ型と値が等しいかをチェックします。等しければtrue、そうでなければfalseを返します。

演算子は「演算子 ー ゼロから始めるJavaScript入門(ECMAScript 2015)【Vol.4】」で説明します。

ではs1s2にはどんな値が入っているのでしょうか。
JavaScriptコンソールに聞いてみましょう。

> s1
<- Symbol()
> s2
<- Symbol()

Symbol()と返すだけです。
シンボル型は、もともとはオブジェクトのプライベートプロパティをつくる方法として仕様が策定されたようです。オブジェクトもプライベートプロパティもまだ学習していません。

シンボル型の例で想定されるのは、定数への値の代入です。定数への代入は、0、1、2というような意味のない整数を代入することが慣例でした。シンボル型を代入することで、一意の値をもつ定数をつくれます。定数については「変数のスコープ、varletの違い、巻き上げ、定数 ー ゼロから始めるJavaScript入門(ECMAScript 2015)【Vol.10】」で解説します。

今回はここまでとします。

スポンサーリンク

関連記事

プロフィール

DESIGNMAP
ディレクター・Web制作者
ON VISITINGを制作・運営。
お問い合わせ