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コードに影響が出てしまうということでしばらく修正はされないようなのでこういうものであると割り切りましょう、、
以上ですお疲れさまでした
コメントをお待ちしております