トップへ戻る
BLOGS

JavaScript基礎 データ型

JavaScript基礎 データ型

JavaScriptには現在8つのデータ型が存在し、これらを定義していくことで初めてデータとして扱えるようになります。

「プログラムを書く際には常にどんなデータ型を扱っているか?」 これを意識していくように以前見ていた学習動画で参考になりました

そんなデータ型でも私が特にまだ理解していない部分の抜粋をまとめていきます

プリミティブ型と非プリミティブ型

  • String型
  • Number型
  • BigInt型
  • Boolean型
  • null型
  • undefined型
  • Symble型
  • Object型

まずこれです

なんとなく理解していましたが、

プリミティブ型とは要するにオブジェクト以外を指します

そしてJavaScriptではMap Promise Array Windowなども全てオブジェクトです

Number型

Number型は主によく目にする整数値、浮動小数点数を表します

10進数は理解できているのでその他の部分を解説します

2進数

先頭に0(ゼロ)または0Bまたは、0b(ゼロビー)をつけることで表します

console.log(0b11);
>3

8進数

先頭に0o,0O(ゼロオー)または0(ゼロ)をつけることで表します

console.log(0o11);
>9

しかし非常に見づらく書いていても分かりづらいため「先頭に0を付けただけ」の方は使用しないでおきます

基本的にはStrictモードをオンにした状態の開発が推奨されるため、モジュールを使用したり文頭で "use strict";を宣言し、「先頭に0を付けただけ」ではエラーになるようにします

16進数

先頭に0または0x(ゼロエックス)をつけてアルファベットのa~f (大文字でも可)を続けることで16進数を表します。

console.log(0x11);
>17

BigInt型

BigIntは任意の制度で整数値を扱える方です。数値の末尾にnを付けることでBigInt型の数値として定義できます

Number型は -(2の53乗 – 1)から2の53乗 – 1までの数値しか表せず、その範囲を超える数値の場合には値が丸め込まれます。一方BigIntの場合には、Number型では表せない値の範囲を表現できます

console.log(2 ** 53 + 1);
 >9007199254740992   Number型では誤った数値が表示される
console.log(2n ** 53n + 1n);
 >9007199254740993n  BigInt型であれば問題ない

BigIntはいくつかルールもあるようです

  • BigInt型とNumber型は混在してはならない
  • BigIntは小数点切り捨て

Object型

はい、、なんとなく苦手意識がありますが、分からない部分をしっかりと洗い出しておきます

ドット記法

Objectに対してプロパティ名、またはメソッド名をドットで続けることで、アクセスできます

値を変更する際には = で代入演算子がそのまま使えます。
更にオブジェクトを追加したい場合にはperson.name.jobのように追加できます

注意点としては必ずプロパティ名を直接指定することです。変数に入れるなどして、文字列を格納しても、undefinedになります

ブラケット記法

一方こちらは変数などで表すことが可能で、ES6からオブジェクトリテラル内でもブラケット記法が使用できるようになったため次のようなオブジェクトの定義が可能となりました


let firstname = "佐藤";
const family = {
  [firstname + 1]: "太郎",
  [firstname + 2]: "次郎",
  [firstname + 3]: "三郎",
};
console.log(family);
>{佐藤1: '太郎', 佐藤2: '次郎', 佐藤3: '三郎'}

シンボル(Symbol)

シンボル(Symbol)はES6で追加された非常に特殊な型でプリミティブ型に分類されます

シンボル(Symbol)はオブジェクトのプロパティに設定するための一意の値を生成するのに使用します
そのため、シンボルを使って設定したプロパティは決して他の値と重複することがありません
以下は定義方法です

let 変数名 = Symbol("ラベル名");
ラベル名:
コンソールでデバックする時に表示されるラベルの名前を設定します。ラベル名が同じでもシンボルの値が異なるため注意<br>ラベルはあくまでコンソールで区別するための名前にすぎません

シンボルはJavaScriptの歴史上開発者向けに用意された機能といった印象で、あまり私が積極的に使用することはなさそうであるため、有事に思い出す備忘録くらいにとどめておきます

最後にデータ型の確認方法と方の変換法を記載しておきます

明示的な型変換

JavaScriptは曖昧な型付けの言語であるため明示的な型変換を行う機会も多そうです

Number( 値 )
数値へ変換する
Boolean( 値 )
真偽値へ変換
String( 値 )
文字列へ変換
BigInt( 値 )
BigInt型へ変換

データ型の確認方法

データ型を確認するためには type of 演算子を使用します
使い方はシンプルで あくまで演算子なのでこの書き方は「型を求める式」であります
したがって、調べたい要素の前に半角スペースを入れて記述するだけです

console.log(typeof "hello");
// > string
console.log(typeof 10);
// > number
console.log(typeof 10n);
// > bigint
console.log(typeof true);
// > boolean
console.log(typeof undefined);
// > undefined
console.log(typeof {});
// > object
console.log(typeof null);
// > object // nullはobjectを返すので注意!
console.log(typeof Symbol());
// > symbol

ここがややこしいのですが、JavaScriptではnull型はオブジェクトとなってしまいます、

ここにも歴史的な背景があるようで、これを修正しようとすると既存のJavaScriptコードに影響が出てしまうということでしばらく修正はされないようなのでこういうものであると割り切りましょう、、

以上ですお疲れさまでした

コメントをお待ちしております

お気軽にコメントをどうぞ。

CAPTCHA