記事一覧

JavaScript データ型と型変換まとめ




目次



JavaScriptは厳密な比較演算子の使用が推奨されているということ

ハロー、みなさん。エジソンです。

JavaScriptは型宣言が無い言語です。しかしながら、型宣言が無いからといってデータ型が無い訳ではなく、内部的にはデータ型を保持しています。

過去の記事で、PHPにおける比較演算子には、厳密な比較演算子を使用すべきと提言しましたが、それはJavaScriptにおいても同様です。

その際には、JavaScriptのデータ型と型変換の方法を正しく把握しておくことが重要です。


Related Posts

PHP - 緩やかな比較 == と厳密な比較 ===




JavaScriptのデータ型

JavaScriptのデータ型には以下が存在します。

  • 真偽値(Boolean)
  • 数値(Number)
  • 文字列(String)
  • 配列(array)
  • オブジェクト(object)
  • null
  • undefined

上記のうち、スカラーデータ型は、真偽値・数値・文字列です。配列はArrayオブジェクトなので、オブジェクトに含まれます。

MDN - JavaScript 文法とデータ型


JavaScriptの型変換

JavaScriptの型変換には、色々な方法がありますが、例えば以下の方法で実行することができます。

  • Number() - 整数への変換
  • Boolean() - 論理値への変換
  • String() - 文字列への変換

上記はそれぞれノンコンストラクタコンテキスト(new演算子無しでの呼び出し)関数であることに注意してください。


型変換を試して見る

厳密な比較をする際に、左辺と右辺のデータ型が異なる場合には、どちらか一方を他方に合わせて型変換する必要があります。

以下のように、型変換を挟むことで、データ型の異なる2値の厳密な比較においても、正しく比較できるようになるでしょう。

var str = '1';
var int = 1.0;
var bool = true;

// 厳密な比較では全て false になる
console.log('str   === int   : ' + (str === int    ? 'true' : 'false'));
console.log('str   === bool  : ' + (str === bool   ? 'true' : 'false'));
console.log('int   === bool  : ' + (int === bool   ? 'true' : 'false'));

console.log("");

// キャストして値が同一なので全て true になる
console.log('str   === int    : ' + (str === String(int) ? 'true' : 'false'));
console.log('str   === bool   : ' + (Number(str) === Number(bool) ? 'true' : 'false'));
console.log('int   === bool   : ' + (int === Number(bool) ? 'true' : 'false'));


実行結果
str   === int   : false
str   === bool  : false
int   === bool  : false

str   === int    : true
str   === bool   : true
int   === bool   : true


データ型の変換には色々な方法がある

ここで紹介した以外にも、データ型を変換する方法がJavaScriptには用意されています。

まずは、基本形の一つとして、Number、String、Booleanという関数が存在しており変換したい値を渡すと該当のデータ型に変換される というのを記憶しておくと良いかと思います。


関連記事

このエントリーをはてなブックマークに追加

コメント

コメントの投稿

非公開コメント

プロフィール

EZOLABブログへようこそ。
EZOLABは、札幌のソフトウェア会社です。

http://ezolab.co.jp