home
twitter
ページトップへ
目次
  • JavaScriptでは暗黙的にデータの型変換が行われている。
  • よく使われる3つの型変換とは?
  • 「どのデータ型からどのデータ型への変換なのか?」でルールが変わる
  • プリミティブなデータの中で、symbol型は最後にまとめて書く。
  • 文字列変換
  • number型からstring型へ
  • bigint型からstring型へ
  • boolean型からstring型へ
  • null型からstring型へ
  • undefined型からstring型へ
  • 明示的にstring型へ型変換する方法
  • 数値変換
  • string型からnumber型へ
  • bigint型からnumber型へ
  • boolean型からnumber型へ
  • null型からnumber型へ
  • undefined型からnumber型へ
  • 真偽値変換
  • 明示的にboolean型へと真偽値変換する方法
  • symbol型の型変換
  • symbol型からstring型への型変換
  • symbol型からnumber型への型変換
  • symbol型からboolean型への型変換
  • オブジェクト型のデータの型変換は別記事で
  • まとめ
about
categories
page
archive
皇帝ペンギンブログ

2022/08/14 (更新日:2024/07/11)

【JavaScript】プリミティブなデータの型変換【ルール】

Categories > JavaScriptの基本編
プリミティブなデータの型変換に関するルールが知りたい。

JavaScriptにおいて、データの型変換は暗黙的に行われることもあります。

JavaScriptの細かい挙動を理解するためには、データの型変換のルールを知っておく必要があります。

この記事では、「プリミティブ型のデータ」の型変換に絞って解説します。

「データ型ってなに?」
「プリミティブなデータってなに?」

という方はまず、下記の記事をお読み下さい。知っている方も再確認するといいのかなと、思います。

【JavaScript】データ型について解説。【分かりやすい】

関連記事
目次
非表示
  • JavaScriptでは暗黙的にデータの型変換が行われている。
  • よく使われる3つの型変換とは?
  • 「どのデータ型からどのデータ型への変換なのか?」でルールが変わる
  • プリミティブなデータの中で、symbol型は最後にまとめて書く。
  • 文字列変換
  • number型からstring型へ
  • bigint型からstring型へ
  • boolean型からstring型へ
  • null型からstring型へ
  • undefined型からstring型へ
  • 明示的にstring型へ型変換する方法
  • 数値変換
  • string型からnumber型へ
  • bigint型からnumber型へ
  • boolean型からnumber型へ
  • null型からnumber型へ
  • undefined型からnumber型へ
  • 真偽値変換
  • 明示的にboolean型へと真偽値変換する方法
  • symbol型の型変換
  • symbol型からstring型への型変換
  • symbol型からnumber型への型変換
  • symbol型からboolean型への型変換
  • オブジェクト型のデータの型変換は別記事で
  • まとめ

JavaScriptでは暗黙的にデータの型変換が行われている。

実は、JavaScriptでは暗黙的にデータの型変換が行われています。

その例を挙げると、

let result = "東京" + 2022;

console.log( result ); // 東京2022
console.log( typeof result ); // "string"

これは「文字列の連結」が行われる前に、「 2022 」という数値がstring型に変換されています。

なので、JavaScriptを上手く使いこなすには、型変換のルールを知っておく必要があります。

よく使われる3つの型変換とは?

まず、JavaScriptでよく行われるプリミティブなデータに対する型変換を3つ紹介します。

  • 文字列変換
  • 数値変換
  • 真偽値変換

他のデータ型からstring型への型変換は「文字列変換」と呼ばれます。

それと同じように、他のデータ型からnumber型への型変換を「数値変換」、他のデータ型からboolean型への型変換を「真偽値変換」と呼びます。

「どのデータ型からどのデータ型への変換なのか?」でルールが変わる

ここでもう一つ重要なのが、「どのデータ型から変換するのか?」ということです。

それを踏まえて、解説していきます。

プリミティブなデータの中で、symbol型は最後にまとめて書く。

この記事はプリミティブなデータの型変換のルールをまとめていますが、最後にまとめて「symbol型の型変換のルール」に関して書きます。「その方が伝わりやすいのかな」、と判断したためです。

では、代表的な3つの型変換に関するルールについて、詳しく書いていきます。

文字列変換

下記のデータ型のデータは、どのように文字列変換するか、そのルールを書いていきます。

文字列変換は、基本的に「そのまま」、です。

  • number
  • bigint
  • boolean
  • null
  • undefined

number型からstring型へ

let result = 4 + "2";

console.log( result ); // "42"

number型が、「文字列の連結」により、そのまま文字列型へ型変換されています。

bigint型からstring型へ

let result = 159802485810841085n;

console.log( result + "ああああ" ); // "159802485810841085ああああ"
console.log( typeof result ); // "bigint"
console.log( typeof ( result + "ああ" ) ); // "string"

bigint型のデータも「文字列の連結」によって、ほぼそのまま文字列型へと変換されています。

boolean型からstring型へ

let result = true;

console.log( result + "ああ" ); // "trueああ"
console.log( typeof ( result + "ああ" ) ); // "string"

boolean型のデータも「文字列の連結」によって、そのまま文字列型へと変換されます。

null型からstring型へ

let result = null;

console.log( result + "ああ" ); // "nullああ"
console.log( typeof ( result + "ああ" ) ); // "string"

null型のデータも「文字列の連結」によって、そのまま文字列型へと変換されます。

undefined型からstring型へ

let result = undefined;

console.log( result + "ああ" ); // "undefinedああ"
console.log( typeof ( result + "ああ" ) ); // "string"

undefined型のデータも「文字列の連結」によって、そのまま文字列型へと変換されます。

明示的にstring型へ型変換する方法

let stri = String( 23 );

console.log( typeof stri ); // "string"

このように、「String()」を使うことで、明示的にstring型へと型変換が可能です!

数値変換

JavaScriptで数値変換は、算術演算子が数学的に使われた時に、自動的に行われます。

では、下記のデータ型のデータは、どのように「数値変換」するのか、そのルールを書いていきます。

  • string
  • bigint
  • boolean
  • null
  • undefined

string型からnumber型へ

let num = "7" - "3";

console.log( num ); // 4
console.log( typeof num ); // number

この様に、数字のような文字列型のデータは、算術演算子によって、自動的にnumber型へと変換されます。

let num = "7" - "3y";

console.log( num ); // NaN
console.log( typeof num ); // number

数字じゃない文字列が入ってしまっている文字列型のデータは、この様に、number型へと型変換が行われる際に「 NaN 」という特殊なnumber型のデータになります。

「not a number」の略です。

空の文字列の場合は「0」へと変換される。
let num = "7" - "";

console.log( num ); // 7
console.log( typeof num ); // number

からの文字列はnumber型へ型変換が行われる際に「0」へと変換されます。

bigint型からnumber型へ

let num = 1595n - 5; // Uncaught TypeError: Cannot mix BigInt and other types, use explicit conversions at ~

console.log( num ); 
console.log( typeof num ); 

「Uncaught TypeError: Cannot mix BigInt and other types, use explicit conversions at ~」

bigint型は算術演算で使用する場合、bigint型のデータとしか算術演算ができません。

片方がnumber型でもう片方がbigint型の計算は、そのままではできないので、どちらかを明示的に型変換する必要があります。

明示的にNumber()関数を使って型変換してあげればOK
let num = Number( 1595n )  - 5;

console.log( num ); // 1590
console.log( typeof num ); // number

このように、Number型へそろえることで、算術演算が行えます。

※number型で正確に扱える「整数」の範囲を超えている、bigint型のデータをnumber型へ型変換すると、精度が落ちてしまうことがあるので、注意が必要です。

※number型は絶対値の大きさが「2の53乗-1」までの「整数」しか、正確に扱えません。

boolean型からnumber型へ

boolean型のデータは、下記の様にnumber型へと型変換されます。

  • true → 1
  • false → 0
let num =  true * 3;

console.log( num ); // 3
console.log( typeof num ); // number

このように、「true」が「1」に型変換していることが分かります。

null型からnumber型へ

nullは数値変換すると、「0」となります。

let num =  null * 3;

console.log( num ); // 0
console.log( typeof num ); // number

このように、nullが0へと数値変換されているのが分かります。

undefined型からnumber型へ

undefinedは数値変換すると、「NaN」となります。

let num =  undefined * 3;

console.log( num ); // NaN
console.log( typeof num ); // number

このように、undefinedがNaNに数値変換されていることが分かります。

真偽値変換

JavaScriptの真偽値変換は、if文の条件式や、論理演算の際に、自動的に行われます。

真偽値変換のルールは下記の通りです。

「0」「空文字列」「null」「undefined」「NaN 」は「false」となる。

他の値は「true」となる。

以上です。シンプルですね。

明示的にboolean型へと真偽値変換する方法

let boo = Boolean( 2025 );

console.log( typeof boo ); // "boolean"

このように、「Boolean()」を使うことで、明示的に真偽値変換が可能です。

symbol型の型変換

symbol型のデータは少し特殊なものなので、別にまとめておきました。

symbol型からstring型への型変換

symbol型は自動的にstring型への型変換はされません。

暗黙的な型変換を行うタイミングでエラーになってしまいます。

let stri = Symbol("id") + "go"; // Cannot convert a Symbol value to a string at ~

「Cannot convert a Symbol value to a string at ~」

このようにすると、上のようなエラーが、でてしまいます。

symbol型の明示的な文字列型への型変換はできる。
let stri = String( Symbol("id") );

console.log( stri ); // "Symbol(id)"
console.log( typeof stri ); // "string"

このように「String()」を使うことで、明示的な型変換は可能です。

symbol型からnumber型への型変換

number型への型変換はエラーになってしまいます。

symbol型からboolean型への型変換

symbol型のデータは、暗黙的にboolean型への型変換が可能です。

その際は、必ず「true」になります。

let boo = Boolean( Symbol() );

console.log( boo ); // "true"
console.log( typeof boo ); // "boolean"

このような明示的な型変換もできます。

その際も「true」です。

オブジェクト型のデータの型変換は別記事で

この記事では、プリミティブなデータに絞って型変換のルールを解説しました。

オブジェクトは、プリミティブとは違った仕組みで変換が行われるので、敢えて別の記事に分けて解説しますね。

まとめ

JavaScriptでは、暗黙的にデータの型変換が行われている。

そして、JavaScriptでは、下記の3つの型変換がよく使われる。

  • 文字列変換
  • 数値変換
  • 真偽値変換

プリミティブなそれぞれのデータの型変換のルールは下記の通り。

文字列変換

  • number そのまま
  • bigint ほぼそのまま
  • boolean そのまま
  • null そのまま
  • undefined そのまま

明示的な型変換には「String()」が使える。

数値変換

  • string そのまま or NaN
  • bigint そのまま (精度が落ちる可能性あり。)
  • boolean 「true 1」「false 0」
  • null 0
  • undefined NaN

明示的な型変換には「Number()」が使える。

真偽値変換

  • 「0」「空文字列」「null」「undefined」「NaN 」は「false」
  • 他は true
この記事の内容は以上です!

最後まで読んでくれてありがとうございました!

僕自身も日々、技術力の向上に努めていますので、皆さんも一緒に楽しくプログラミングの勉強を頑張りましょう!

ではまた。

自分のロゴ!

皇帝ペンギン

全力で、書きます。
少しでもお役に立てたら幸いです。
楽しんで読んで下さい 。-_- 。
よろしくお願いします!

x(旧twitter) youtube
Categories
  • トップへ
  • ITパスポート (1)
  • programming (168)
    • CSSのアニメーション編 (26)
    • CSSのグリッドレイアウト編 (1)
    • CSSのセレクター編 (58)
    • CSSのフレックスボックス編 (1)
    • CSSのメディアクエリー編 (7)
    • CSSの基本編 (34)
    • HTMLのformタグ編 (1)
    • HTMLの基本編 (3)
    • JavaScriptの入門編 (30)
    • JavaScriptの基本編 (5)
    • Web制作をする環境を整えよう! (1)
  • Uncategorized (23)
  • VScode (1)
  • おすすめ商品! (1)
  • クラロワ (2)
  • マーケティング (17)
  • 大学生活 (7)
  • 心理学 (9)
  • 映画 (1)
  • 法学 (4)
  • 経済学 (4)
  • 読書 (7)
Pages
  • プライバシーポリシー
  • 免責事項
  • プロフィール
Archive
  • 2025年3月 (1)
  • 2025年1月 (9)
  • 2024年12月 (13)
  • 2024年11月 (5)
  • 2024年10月 (10)
  • 2024年9月 (15)
  • 2024年8月 (5)
  • 2024年7月 (6)
  • 2024年6月 (5)
  • 2024年5月 (10)
  • 2024年4月 (24)
  • 2024年3月 (11)
  • 2024年2月 (6)
  • 2024年1月 (10)
  • 2023年12月 (4)
  • 2023年11月 (3)
  • 2023年10月 (2)
  • 2023年9月 (3)
  • 2023年8月 (6)
  • 2023年7月 (3)
  • 2023年6月 (8)
  • 2023年5月 (2)
  • 2023年3月 (1)
  • 2023年2月 (1)
  • 2022年10月 (2)
  • 2022年9月 (2)
  • 2022年8月 (8)
  • 2022年7月 (2)
  • 2022年6月 (6)
  • 2022年5月 (9)
  • 2022年4月 (2)
  • 2022年2月 (4)
  • 2021年12月 (1)
  • 2021年11月 (4)
  • 2021年10月 (8)
  • 2021年9月 (14)
  • 2021年8月 (6)
  • 2021年6月 (1)
  • 2021年5月 (2)
  • 2021年4月 (1)
  • 2021年3月 (1)
  • 2021年2月 (2)
  • 2020年10月 (1)
  • 2020年7月 (1)
  • 2020年4月 (1)
  • 2020年1月 (1)
  • 2019年12月 (2)
© Copyright Syuta Chiba, 2019 All Rights Reserved.