データ型とは?

Updated
2021/8/8 9:15
Author
Jumpei IkegamiJumpei Ikegami
order
2

JavaScriptにおけるデータ型とは?

データ型とは、プログラミング言語において、データをどのように扱うかを決めたパターンです。たとえば、文字列、数値などがあります。
データ型が異なると、そのデータに対して実行できる操作やプログラム上での解釈が変わってきます。たとえば文字列データであれば、ある文字列が別の文字列に部分一致するかチェックしたり、文字列の一部を別の文字列に置換したりすることができます。数値データであれば、四則演算をしたり、大小比較をしたりできます。
JavaScriptを少し書いてみる程度であれば、理解するべきデータ型は次の通りです。
  • 文字列(String)
  • 数値(Number)
  • 真偽値(Boolean)
  • undefined/null
  • オブジェクト(Object)
ちなみに、オブジェクト以外のデータ型を「プリミティブ型」と呼びます。プリミティブ型に属するデータ型とオブジェクトは性質が少し異なります。そのため、オブジェクトについては別の記事で説明します。

文字列(String)

文字列は、その名の通り連続した文字を扱うことができるデータ型です。基本的にはUnicodeと呼ばれる規格で定められた文字であれば、英字でも数字でも記号でも日本語でもアラビア文字でもハングルでも、文字列の中で扱うことができます。
文字列を全く扱わないプログラムは存在しないんじゃないかと思えるくらい、JavaScriptで文字列を扱うシーンはとても多いです。たとえば、ブラウザで今見ているURLをJavaScriptで取得すれば、それは文字列です。ユーザーが入力した値を扱う場合も、ほとんどが文字列になるでしょう。

表記方法

文字列をJavaScriptの中でそのまま記述する場合は、引用符(クォーテーションマーク)で囲みます。引用符にはダブルクォートとシングルクォートの2種類がありますが、どちらでも使うことができます。ただし、1つの文字列を囲む引用符は一致している必要があります。
JavaScript
ダブルクォートとシングルクォートにほとんど違いは無いので、どちらを使っても大丈夫です。ただし、文字列の中で文字としてダブルクォートを使いたい場合は、引用符としてはシングルクォートを使ってください。そうしないと、どこまでが文字列なのかわからなってしまうからです。逆も同じで、文字列の中で文字としてシングルクォートを使いたい場合は、引用符としてはダブルクォートを使います。
JavaScript

空文字

文字列では、「文字を1文字も含まない文字列」を扱うことができます。こうした空の文字列を、「空文字(からもじ)」と呼びます。
文字を含まないのに文字列とはどういうことかと混乱するかもしれません。空文字は、数字の0に似ています。あなたは普段0という数字を当たり前に扱っていますが、「1つも存在しない」という意味なのに0は数字として扱われています。それは、0という数字を定義した方が数学において色々と都合がいいからです。これと同様に、空の文字列を「空文字」と定義してプログラムで扱えるようにした方が、色々と都合がいいのです。
空文字をJavaScriptの中で記述する場合は、直感的にもわかるように、同じ引用符を2回連続で書きます。
JavaScript
読みにくいのでついつい引用符の中に半角スペースとかを入れたくなるかもしれませんが、そうすると空文字ではなく「半角スペース1つが入った文字列」になってしまいます。

数値(Number)

数値は、その名の通り数値計算などができる数値データです。正の整数だけではなく、小数、負の数も表すことができます。
数値データも、文字列よりは登場頻度が少ないですが、よく使われます。大小の比較が必要な場合、回数を数えなければいけない場合などは、数値データを扱う必要があります。

表記方法

数値をJavaScriptの中でそのまま記述する場合は、引用符などを付けずにそのまま数字を記述します。直感の通り、ピリオドで小数点を表したり、マイナス記号で負の数を表したりすることもできます。
JavaScript
ちなみに、普通は10進数で数値を扱いますが、2進数や16進数で数値を記述する表記方法もあったりします。

真偽値(Boolean)

真偽値は、truefalseの2つの値のどちらかしかとらないようなデータ型です。これだけを聞くと、「なんでそんな使い勝手が悪そうなものがあるのか」という気持ちになります。なぜなら、数値型を使えば2つと言わず、0, 1, 2, ...と、もっと多くの状態を表すことができるからです。実際、真偽値データを使う機会はそこまで多くはありません。
真偽値が最も登場するのは、if文などの条件式です。その場合も、条件式の結果が動的に変わることがほとんどなので、たとえば「変数count5より大きかったら」のような比較式が結果的に真偽値になります。つまり、if(true)みたいに直接的に真偽値を書くケースはほとんどありません。

表記方法

こうした理由から、真偽値をJavaScriptの中でそのまま記述することは少ないです。もし書きたければ、引用符などを付けずにそのままtruefalseを記述します。
JavaScript

undefined/null

undefinednullは、「定義されてない」とか「存在しない」ということを意味するデータ型です。存在しないのにデータ型としては存在しているのでややこしいのですが、「存在しない」ということ自体が重要なケースもあって便利なので、undefinednullが使われます。
undefinednullは、JavaScript上ではほとんどその違いを意識せずに使うことができます。ただし、登場するシチュエーションは若干異なります。
たとえば、あるオブジェクトの中に定義されていないプロパティを参照しようとすると、undefinedが返ってきたりします。よくわからないと思うので現実世界でたとえます。あなたの友人はウサギを飼っています。そのウサギに子供が生まれたので、あなたはそれを見せてもらいに友人の家に行きました。小さくて可愛いウサギたち。あなたはその子ウサギたちの名前を友人に訊ねます。しかし、子ウサギは生まれたばかりなので、まだ名前が決まっていないようでした。これがundefinedです。「まだ定義されていない」というわけです。余計にわかりにくくなったかもしれません。
たとえば、「戻り値を返すような関数」で戻り値に返す値が見つからなかったとき、nullが返ってきたりします。これもよくわからないと思うので具体例で説明します。非エンジニアのためのエンジニアリングでよく登場する関数に、document.querySelector()というものがあります。これは、渡したCSSセレクタをもとにWebページを検索し、対応する要素を返す関数です。ページ内の要素を操作するのに便利ですね。しかし、渡したCSSセレクタが間違っていたりしたとき、対応する要素がページ上に無いケースがあります。その場合、返す値が「存在しない」ので、nullが返ってきます。
undefinednullを意識するよくあるケースは、2つあります。
1つは、真偽値と同様、if文などの条件式です。上の例でいうと、「子ウサギの名前がundefinedだったら」とか「document.querySelector()の結果がnullだったら」のように例外的なケースを考慮した分岐を書く場合に使います。
2つ目は、バグが生じたケースです。本来は定義されているべきプロパティが定義されていなくて、処理がうまくいかないことがよくあります。デバッグした結果、あるべきプロパティがundefinedであった、というわけです。

表記方法

undefinednullをJavaScriptの中でそのまま記述したければ、引用符などを付けずにそのまま記述します。
JavaScript

もっと詳しく知りたい方へ