<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=JavaScript%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E3%83%97%E3%83%AA%E3%83%9F%E3%83%86%E3%82%A3%E3%83%96%E5%9E%8B</id>
	<title>JavaScriptの基礎 - プリミティブ型 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=JavaScript%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E3%83%97%E3%83%AA%E3%83%9F%E3%83%86%E3%82%A3%E3%83%96%E5%9E%8B"/>
	<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=JavaScript%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E3%83%97%E3%83%AA%E3%83%9F%E3%83%86%E3%82%A3%E3%83%96%E5%9E%8B&amp;action=history"/>
	<updated>2026-07-02T14:11:51Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://mochiu.net/index.php?title=JavaScript%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E3%83%97%E3%83%AA%E3%83%9F%E3%83%86%E3%82%A3%E3%83%96%E5%9E%8B&amp;diff=14331&amp;oldid=prev</id>
		<title>Wiki: ページの作成:「== 概要 == JavaScriptには、&lt;u&gt;7つのプリミティブ型&lt;/u&gt; が存在する。&lt;br&gt; これは、string (文字列)、number (数値)、bigint (大整数)、boolean (真偽値)、null、undefined、symbol (シンボル) である。&lt;br&gt; &lt;br&gt; プリミティブ型はオブジェクト型と対比される概念であり、&lt;u&gt;&quot;オブジェクトではなく、メソッドやプロパティを持たないデータ&quot;&lt;/u&gt; と定義される。&lt;br&gt; &lt;br&gt; 全てのプ…」</title>
		<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=JavaScript%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E3%83%97%E3%83%AA%E3%83%9F%E3%83%86%E3%82%A3%E3%83%96%E5%9E%8B&amp;diff=14331&amp;oldid=prev"/>
		<updated>2026-02-18T12:30:44Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「== 概要 == JavaScriptには、&amp;lt;u&amp;gt;7つのプリミティブ型&amp;lt;/u&amp;gt; が存在する。&amp;lt;br&amp;gt; これは、string (文字列)、number (数値)、bigint (大整数)、boolean (真偽値)、null、undefined、symbol (シンボル) である。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; プリミティブ型はオブジェクト型と対比される概念であり、&amp;lt;u&amp;gt;&amp;quot;オブジェクトではなく、メソッドやプロパティを持たないデータ&amp;quot;&amp;lt;/u&amp;gt; と定義される。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; 全てのプ…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 概要 ==&lt;br /&gt;
JavaScriptには、&amp;lt;u&amp;gt;7つのプリミティブ型&amp;lt;/u&amp;gt; が存在する。&amp;lt;br&amp;gt;&lt;br /&gt;
これは、string (文字列)、number (数値)、bigint (大整数)、boolean (真偽値)、null、undefined、symbol (シンボル) である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
プリミティブ型はオブジェクト型と対比される概念であり、&amp;lt;u&amp;gt;&amp;quot;オブジェクトではなく、メソッドやプロパティを持たないデータ&amp;quot;&amp;lt;/u&amp;gt; と定義される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
全てのプリミティブ型は共通してイミュータブル (不変) という特性を持つ。&amp;lt;br&amp;gt;&lt;br /&gt;
1度作成されたプリミティブ値は変更できない。変数を再割り当てすることはできるが、既存の値そのものは変わらない。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
また、プリミティブ型は値渡しの特性を持つ。&amp;lt;br&amp;gt;&lt;br /&gt;
変数に別の変数を代入すると、値そのものがコピーされる。&amp;lt;br&amp;gt;&lt;br /&gt;
その後、どちらかの変数を変更しても、もう一方には影響しない。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
型の確認には &amp;lt;code&amp;gt;typeof&amp;lt;/code&amp;gt; 演算子を使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
ただし、&amp;lt;code&amp;gt;typeof null&amp;lt;/code&amp;gt; が &amp;lt;code&amp;gt;&amp;quot;object&amp;quot;&amp;lt;/code&amp;gt; を返すという歴史的なバグが存在するため、nullのチェックには &amp;lt;code&amp;gt;=== null&amp;lt;/code&amp;gt; を使用する必要がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
JavaScriptは動的型付け言語であり、変数の型は実行時に決まる。&amp;lt;br&amp;gt;&lt;br /&gt;
また、演算子やコンテキストによって型が自動変換される &amp;lt;u&amp;gt;型強制 (type coercion)&amp;lt;/u&amp;gt; が発生することがある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;この暗黙的な型変換の挙動を理解することは、予期しないバグを避けるために重要である。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== プリミティブ型の一覧 ==&lt;br /&gt;
JavaScriptの7つのプリミティブ型を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ JavaScriptのプリミティブ型一覧&lt;br /&gt;
! 型名 !! typeofの結果 !! ラッパーオブジェクト !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| string || &amp;quot;string&amp;quot; || String || UTF-16エンコードされたテキスト&lt;br /&gt;
|-&lt;br /&gt;
| number || &amp;quot;number&amp;quot; || Number || IEEE 754倍精度浮動小数点数&lt;br /&gt;
|-&lt;br /&gt;
| bigint || &amp;quot;bigint&amp;quot; || BigInt || 任意精度の整数 (ES2020)&lt;br /&gt;
|-&lt;br /&gt;
| boolean || &amp;quot;boolean&amp;quot; || Boolean || true または false&lt;br /&gt;
|-&lt;br /&gt;
| null || &amp;quot;object&amp;quot; &amp;lt;u&amp;gt;(歴史的バグ)&amp;lt;/u&amp;gt; || なし || オブジェクト値の意図的な不在&lt;br /&gt;
|-&lt;br /&gt;
| undefined || &amp;quot;undefined&amp;quot; || なし || 値の不在 (未割り当て)&lt;br /&gt;
|-&lt;br /&gt;
| symbol || &amp;quot;symbol&amp;quot; || Symbol || ユニークで不変の識別子 (ES2015)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== string (文字列) ==&lt;br /&gt;
string型は、UTF-16エンコードされたテキストを表すプリミティブ型である。&amp;lt;br&amp;gt;&lt;br /&gt;
ダブルクォート (&amp;lt;code&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;)、シングルクォート (&amp;lt;code&amp;gt;&amp;#039;&amp;lt;/code&amp;gt;)、またはバックティック (&amp;lt;code&amp;gt;`&amp;lt;/code&amp;gt;) のいずれかで囲んで表現する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
文字列はイミュータブルであり、1度作成した文字列の内容を変更することはできない。&amp;lt;br&amp;gt;&lt;br /&gt;
文字列メソッドは元の文字列を変更せず、常に新しい文字列を返す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 文字列リテラルの表記方法&lt;br /&gt;
 const str1 = &amp;quot;Hello, World!&amp;quot;;&lt;br /&gt;
 const str2 = &amp;#039;Hello, World!&amp;#039;;&lt;br /&gt;
 const name = &amp;quot;Alice&amp;quot;;&lt;br /&gt;
 const str3 = `Hello, ${name}!`;  // テンプレートリテラル: &amp;quot;Hello, Alice!&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 // イミュータブル性の確認&lt;br /&gt;
 const str = &amp;quot;hello&amp;quot;;&lt;br /&gt;
 str.toUpperCase();               // &amp;quot;HELLO&amp;quot; を返すが、str は変わらない&lt;br /&gt;
 console.log(str);                // &amp;quot;hello&amp;quot; のまま&lt;br /&gt;
 &lt;br /&gt;
 // 文字列の長さ&lt;br /&gt;
 console.log(&amp;quot;hello&amp;quot;.length);     // 5&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== number ==&lt;br /&gt;
number (数値) 型は、IEEE 754倍精度 (64ビット) 浮動小数点形式で表現される数値を扱うプリミティブ型である。&amp;lt;br&amp;gt;&lt;br /&gt;
JavaScriptは整数と浮動小数点数を区別せず、全ての数値をこの単一の型で表現する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
number型には、通常の数値に加えて以下の特殊な値が存在する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* NaN (Not-a-Number)&lt;br /&gt;
*: 数値として表現できない計算の結果を示す。&lt;br /&gt;
*: &amp;lt;code&amp;gt;NaN === NaN&amp;lt;/code&amp;gt; は &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; になるという特殊な性質があるため、&amp;lt;code&amp;gt;Number.isNaN()&amp;lt;/code&amp;gt; を使用して確認する。&lt;br /&gt;
* Infinity / -Infinity&lt;br /&gt;
*: 数値が表現可能な範囲を超えた場合に得られる値。&lt;br /&gt;
* Number.MAX_SAFE_INTEGER / Number.MIN_SAFE_INTEGER&lt;br /&gt;
*: 安全に表現できる整数の上限 ( &amp;lt;math&amp;gt;2^{53} - 1&amp;lt;/math&amp;gt; ) と 下限 ( &amp;lt;math&amp;gt;- (2^{53} - 1)&amp;lt;/math&amp;gt; ) を示す定数。&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 基本的な数値&lt;br /&gt;
 const integer = 42;&lt;br /&gt;
 const float = 3.14;&lt;br /&gt;
 const negative = -100;&lt;br /&gt;
 &lt;br /&gt;
 // 特殊な値&lt;br /&gt;
 console.log(1 / 0);              // Infinity&lt;br /&gt;
 console.log(-1 / 0);             // -Infinity&lt;br /&gt;
 console.log(&amp;quot;hello&amp;quot; - 1);        // NaN&lt;br /&gt;
 &lt;br /&gt;
 // NaN の確認&lt;br /&gt;
 console.log(NaN === NaN);        // false (特殊な性質)&lt;br /&gt;
 console.log(Number.isNaN(NaN));  // true&lt;br /&gt;
 &lt;br /&gt;
 // 浮動小数点精度の問題&lt;br /&gt;
 console.log(0.1 + 0.2);          // 0.30000000000000004&lt;br /&gt;
 &lt;br /&gt;
 // 安全な整数の範囲&lt;br /&gt;
 console.log(Number.MAX_SAFE_INTEGER);      // 9007199254740991&lt;br /&gt;
 console.log(Number.MAX_SAFE_INTEGER + 1);  // 9007199254740992&lt;br /&gt;
 console.log(Number.MAX_SAFE_INTEGER + 2);  // 9007199254740992 (精度が失われる)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== bigint ==&lt;br /&gt;
bigint (大整数) 型は、任意精度の整数を表現できるプリミティブ型である。&amp;lt;br&amp;gt;&lt;br /&gt;
ES2020で導入された。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
number型では安全に扱えない &amp;lt;code&amp;gt;Number.MAX_SAFE_INTEGER&amp;lt;/code&amp;gt; を超える大きな整数の計算に使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
bigintリテラルは、整数値の末尾に &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; を付けて表記する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;BigInt()&amp;lt;/code&amp;gt; コンストラクタで変換することも可能である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
bigint型にはいくつかの重要な制限がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* number型との混在不可&lt;br /&gt;
*: bigintとnumberを直接演算すると、&amp;lt;u&amp;gt;TypeError&amp;lt;/u&amp;gt; が発生する。&lt;br /&gt;
* 浮動小数点非対応&lt;br /&gt;
*: bigintは整数のみを扱う。&lt;br /&gt;
*: 小数点以下の値を持つ数値から変換しようとすると &amp;lt;u&amp;gt;RangeError&amp;lt;/u&amp;gt; が発生する。&lt;br /&gt;
* JSON非対応&lt;br /&gt;
*: &amp;lt;code&amp;gt;JSON.stringify()&amp;lt;/code&amp;gt; は、bigintを含むオブジェクトをそのままシリアライズできない。&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // bigintリテラル&lt;br /&gt;
 const big1 = 123n;&lt;br /&gt;
 const big2 = 9007199254740999n;&lt;br /&gt;
 &lt;br /&gt;
 // BigInt()コンストラクタ&lt;br /&gt;
 const big3 = BigInt(Number.MAX_SAFE_INTEGER);  // 9007199254740991n&lt;br /&gt;
 &lt;br /&gt;
 // number型では精度が失われる計算が正確に行える&lt;br /&gt;
 console.log(big3 + 1n);                // 9007199254740992n&lt;br /&gt;
 console.log(big3 + 1n === big3 + 2n);  // false (bigint は正確)&lt;br /&gt;
 &lt;br /&gt;
 // number との混在はエラー&lt;br /&gt;
 // console.log(42 + 1n);  // TypeError: Cannot mix BigInt and other types&lt;br /&gt;
 &lt;br /&gt;
 // 比較演算子は使用可能&lt;br /&gt;
 console.log(1n &amp;lt; 2);      // true&lt;br /&gt;
 console.log(2n &amp;gt; 1);      // true&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== boolean (真偽値) ==&lt;br /&gt;
boolean型は、&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; または &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; の2つの値のみを持つプリミティブ型である。&amp;lt;br&amp;gt;&lt;br /&gt;
条件分岐やループ等の制御フローに使用される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
JavaScriptでは、boolean値だけでなく、あらゆる値が条件文の中で真 または 偽として評価される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // booleanリテラル&lt;br /&gt;
 const isActive = true;&lt;br /&gt;
 const isDone = false;&lt;br /&gt;
 &lt;br /&gt;
 // 論理演算子&lt;br /&gt;
 console.log(true &amp;amp;&amp;amp; false);  // false&lt;br /&gt;
 console.log(true || false);  // true&lt;br /&gt;
 console.log(!true);          // false&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== truthy / falsyな値 ====&lt;br /&gt;
条件文の中で &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; として評価される値をfalsy値、&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; として評価される値をtruthy値と呼ぶ。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
falsy値は以下の8つのみである。&amp;lt;br&amp;gt;&lt;br /&gt;
それ以外の全ての値は、truthyとして評価される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ falsy値一覧&lt;br /&gt;
! 値 !! 型 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; || boolean || booleanのfalse&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || number || 数値のゼロ&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;-0&amp;lt;/code&amp;gt; || number || 負のゼロ&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0n&amp;lt;/code&amp;gt; || bigint || BigIntのゼロ&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; || string || 空文字列 (シングルクォートやテンプレートリテラルの空文字も同様)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; || null || null&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;undefined&amp;lt;/code&amp;gt; || undefined || undefined&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;NaN&amp;lt;/code&amp;gt; || number || Not-a-Number&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
注意が必要なtruthy値の例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/code&amp;gt; (文字列の &amp;quot;0&amp;quot;)&lt;br /&gt;
*: 空でない文字列は全てtruthyである。&lt;br /&gt;
*: これは、数値の0とは異なる。&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;false&amp;quot;&amp;lt;/code&amp;gt; (文字列の &amp;quot;false&amp;quot;)&lt;br /&gt;
*: 空でない文字列なのでtruthyである。&lt;br /&gt;
* &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt; (空配列)&lt;br /&gt;
*: JavaScriptでは空の配列もオブジェクトと同様にtruthyである。&lt;br /&gt;
*: これは、Pythonとは異なる点に注意する。&lt;br /&gt;
* &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; (空オブジェクト)&lt;br /&gt;
*: 空のオブジェクトもtruthyである。&lt;br /&gt;
* &amp;lt;code&amp;gt;Infinity&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;-Infinity&amp;lt;/code&amp;gt;&lt;br /&gt;
*: ゼロでない数値なのでtruthyである。&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // truthy値の確認&lt;br /&gt;
 if (&amp;quot;0&amp;quot;) { console.log(&amp;quot;実行される&amp;quot;); }   // &amp;quot;0&amp;quot; は truthy&lt;br /&gt;
 if ([]) { console.log(&amp;quot;実行される&amp;quot;); }    // [] は truthy&lt;br /&gt;
 if ({}) { console.log(&amp;quot;実行される&amp;quot;); }    // {} は truthy&lt;br /&gt;
 &lt;br /&gt;
 // falsy値の確認&lt;br /&gt;
 if (0) { console.log(&amp;quot;実行されない&amp;quot;); }&lt;br /&gt;
 if (&amp;quot;&amp;quot;) { console.log(&amp;quot;実行されない&amp;quot;); }&lt;br /&gt;
 if (null) { console.log(&amp;quot;実行されない&amp;quot;); }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== null ==&lt;br /&gt;
nullは、オブジェクト値の意図的な不在を表すプリミティブ値である。&amp;lt;br&amp;gt;&lt;br /&gt;
変数が &amp;lt;u&amp;gt;意図的に空である&amp;lt;/u&amp;gt; ことを示す時に使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
開発者が明示的に設定する値である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
nullはキーワードであり、識別子ではない。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // null の使用例&lt;br /&gt;
 let user = null;                // まだユーザが存在しないことを明示&lt;br /&gt;
 &lt;br /&gt;
 // nullのチェック (=== を使用)&lt;br /&gt;
 console.log(user === null);     // true&lt;br /&gt;
 &lt;br /&gt;
 // nullはfalsy&lt;br /&gt;
 if (!null) {&lt;br /&gt;
    console.log(&amp;quot;nullはfalsy&amp;quot;);  // 実行される&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 // 数値演算でのnullの扱い&lt;br /&gt;
 console.log(1 + null);          // 1 (null は 0 に変換される)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== typeofの注意点 ====&lt;br /&gt;
&amp;lt;code&amp;gt;typeof null&amp;lt;/code&amp;gt; は &amp;lt;code&amp;gt;&amp;quot;object&amp;quot;&amp;lt;/code&amp;gt; を返す。&amp;lt;br&amp;gt;&lt;br /&gt;
これは、JavaScriptの歴史的なバグであり、仕様上の誤りである。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
この問題の背景として、JavaScriptの初期実装では値が32ビット単位で格納されており、型を示す1〜3ビットの型タグと実際のデータで構成されていた。&amp;lt;br&amp;gt;&lt;br /&gt;
オブジェクトの型タグは0であり、nullはNULLポインタ (0x00) として表現されていたため、nullの型タグも0となり、&amp;lt;code&amp;gt;&amp;quot;object&amp;quot;&amp;lt;/code&amp;gt; が返されるようになった。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
2013年にこの動作を修正する提案が行われたが、既存のコードとの後方互換性の問題から却下された。&amp;lt;br&amp;gt;&lt;br /&gt;
そのため、nullであるかを確認するには、&amp;lt;code&amp;gt;typeof&amp;lt;/code&amp;gt; ではなく、&amp;lt;code&amp;gt;=== null&amp;lt;/code&amp;gt; を使用する必要がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // typeof nullの歴史的バグ&lt;br /&gt;
 console.log(typeof null);     // &amp;quot;object&amp;quot; (バグ: 本来は &amp;quot;null&amp;quot; であるべき)&lt;br /&gt;
 &lt;br /&gt;
 // nullのチェックには === null を使用する&lt;br /&gt;
 const value = null;&lt;br /&gt;
 console.log(value === null);  // true (正しい方法)&lt;br /&gt;
 &lt;br /&gt;
 // オブジェクトかどうかを確認する場合は、nullチェックも追加する&lt;br /&gt;
 if (value !== null &amp;amp;&amp;amp; typeof value === &amp;quot;object&amp;quot;) {&lt;br /&gt;
    console.log(&amp;quot;これは本当のオブジェクト&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== undefined ==&lt;br /&gt;
undefined は、値の不在を表すプリミティブ値である。&amp;lt;br&amp;gt;&lt;br /&gt;
変数が宣言されたが値が割り当てられていない場合、関数が明示的な戻り値を返さない場合等に自動的に割り当てられる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 未割り当ての変数&lt;br /&gt;
 let x;&lt;br /&gt;
 console.log(x);  // undefined&lt;br /&gt;
&lt;br /&gt;
 // 関数が値を返さない場合&lt;br /&gt;
 function doNothing() {}&lt;br /&gt;
 console.log(doNothing());  // undefined&lt;br /&gt;
&lt;br /&gt;
 // オブジェクトに存在しないプロパティへのアクセス&lt;br /&gt;
 const obj = { name: &amp;quot;Alice&amp;quot; };&lt;br /&gt;
 console.log(obj.age);  // undefined&lt;br /&gt;
&lt;br /&gt;
 // typeof undefined&lt;br /&gt;
 console.log(typeof undefined);  // &amp;quot;undefined&amp;quot;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== nullとの違い ====&lt;br /&gt;
null と undefined はどちらも &amp;lt;u&amp;gt;値がない&amp;lt;/u&amp;gt; ことを表すが、意味が異なる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ null と undefined の違い&lt;br /&gt;
! 特性 !! null !! undefined&lt;br /&gt;
|-&lt;br /&gt;
| 意味 || オブジェクト値の意図的な不在 || 値の不在 (未割り当て)&lt;br /&gt;
|-&lt;br /&gt;
| 設定者 || 開発者が明示的に設定 || JavaScriptエンジンが自動的に割り当て&lt;br /&gt;
|-&lt;br /&gt;
| typeof の結果 || &amp;lt;code&amp;gt;&amp;quot;object&amp;quot;&amp;lt;/code&amp;gt; (歴史的バグ) || &amp;lt;code&amp;gt;&amp;quot;undefined&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 厳密等価 (&amp;lt;code&amp;gt;===&amp;lt;/code&amp;gt;) による比較 || &amp;lt;code&amp;gt;null === undefined&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;undefined === null&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 緩い等価 (&amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;) による比較 || &amp;lt;code&amp;gt;null == undefined&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;undefined == null&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 数値への変換 || &amp;lt;code&amp;gt;Number(null)&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;Number(undefined)&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;NaN&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| JSON シリアライズ || &amp;lt;code&amp;gt;&amp;quot;null&amp;quot;&amp;lt;/code&amp;gt; として出力される || プロパティごと省略される&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 厳密等価 (===) では false&lt;br /&gt;
 console.log(null === undefined);  // false&lt;br /&gt;
 &lt;br /&gt;
 // 緩い等価 (==) では true (nullish同士)&lt;br /&gt;
 console.log(null == undefined);   // true&lt;br /&gt;
 &lt;br /&gt;
 // 数値変換の違い&lt;br /&gt;
 console.log(1 + null);       // 1 (null は 0 に変換)&lt;br /&gt;
 console.log(1 + undefined);  // NaN (undefined は NaN に変換)&lt;br /&gt;
 &lt;br /&gt;
 // JSONシリアライズの違い&lt;br /&gt;
 JSON.stringify({ a: null, b: undefined });  // &amp;#039;{&amp;quot;a&amp;quot;:null}&amp;#039;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== symbol ==&lt;br /&gt;
symbol (シンボル) 型は、ユニークで不変の識別子を表すプリミティブ型である。ES2015 (ES6) で導入された。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;Symbol()&amp;lt;/code&amp;gt; を呼び出すたびに、一意の新しいシンボルが生成される。&amp;lt;br&amp;gt;&lt;br /&gt;
たとえ同じ説明文 (description) を渡しても、生成されるシンボルは互いに異なる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
主な用途として、オブジェクトプロパティのキーとして使用することで、名前の衝突を防ぐことが挙げられる。&amp;lt;br&amp;gt;&lt;br /&gt;
シンボルをキーとするプロパティは &amp;lt;code&amp;gt;for...in&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;Object.keys()&amp;lt;/code&amp;gt; には現れないため、外部から意図せずアクセスされるリスクを低減できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // Symbolの生成&lt;br /&gt;
 const sym1 = Symbol(&amp;quot;description&amp;quot;);&lt;br /&gt;
 const sym2 = Symbol(&amp;quot;description&amp;quot;);&lt;br /&gt;
 console.log(sym1 === sym2);              // false (同じ説明でも異なるシンボル)&lt;br /&gt;
 &lt;br /&gt;
 // Symbol.for() によるグローバルレジストリ&lt;br /&gt;
 const globalSym1 = Symbol.for(&amp;quot;global&amp;quot;);&lt;br /&gt;
 const globalSym2 = Symbol.for(&amp;quot;global&amp;quot;);&lt;br /&gt;
 console.log(globalSym1 === globalSym2);  // true (同じキーなら同じシンボル)&lt;br /&gt;
 &lt;br /&gt;
 // オブジェクトプロパティのキーとして使用&lt;br /&gt;
 const ID = Symbol(&amp;quot;id&amp;quot;);&lt;br /&gt;
 const user = {&lt;br /&gt;
    name: &amp;quot;Alice&amp;quot;,&lt;br /&gt;
    [ID]: 12345&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 console.log(user[ID]);                   // 12345&lt;br /&gt;
 console.log(Object.keys(user));          // [&amp;quot;name&amp;quot;] (シンボルは列挙されない)&lt;br /&gt;
 &lt;br /&gt;
 // well-known Symbolの例&lt;br /&gt;
 // Symbol.iterator でカスタムイテレータを実装できる&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== typeof演算子 ==&lt;br /&gt;
&amp;lt;code&amp;gt;typeof&amp;lt;/code&amp;gt; 演算子は、オペランドの型を表す文字列を返す演算子である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 typeof &amp;lt;オペランド&amp;gt;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
各プリミティブ型に対する &amp;lt;code&amp;gt;typeof&amp;lt;/code&amp;gt; の結果を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ typeof 演算子の結果一覧&lt;br /&gt;
! 式 !! 結果 !! 備考&lt;br /&gt;
|-&lt;br /&gt;
| typeof &amp;quot;hello&amp;quot; || &amp;lt;code&amp;gt;&amp;quot;string&amp;quot;&amp;lt;/code&amp;gt; || -&lt;br /&gt;
|-&lt;br /&gt;
| typeof 42 || &amp;lt;code&amp;gt;&amp;quot;number&amp;quot;&amp;lt;/code&amp;gt; || -&lt;br /&gt;
|-&lt;br /&gt;
| typeof 123n || &amp;lt;code&amp;gt;&amp;quot;bigint&amp;quot;&amp;lt;/code&amp;gt; || -&lt;br /&gt;
|-&lt;br /&gt;
| typeof true || &amp;lt;code&amp;gt;&amp;quot;boolean&amp;quot;&amp;lt;/code&amp;gt; || -&lt;br /&gt;
|-&lt;br /&gt;
| typeof Symbol() || &amp;lt;code&amp;gt;&amp;quot;symbol&amp;quot;&amp;lt;/code&amp;gt; || -&lt;br /&gt;
|-&lt;br /&gt;
| typeof undefined || &amp;lt;code&amp;gt;&amp;quot;undefined&amp;quot;&amp;lt;/code&amp;gt; || -&lt;br /&gt;
|-&lt;br /&gt;
| typeof null || &amp;lt;code&amp;gt;&amp;quot;object&amp;quot;&amp;lt;/code&amp;gt; || 歴史的バグ&amp;lt;br&amp;gt;nullのチェックには、&amp;lt;code&amp;gt;=== null&amp;lt;/code&amp;gt; を使用する&lt;br /&gt;
|-&lt;br /&gt;
| typeof {} || &amp;lt;code&amp;gt;&amp;quot;object&amp;quot;&amp;lt;/code&amp;gt; || -&lt;br /&gt;
|-&lt;br /&gt;
| typeof [] || &amp;lt;code&amp;gt;&amp;quot;object&amp;quot;&amp;lt;/code&amp;gt; || 配列もobjectとして扱われる&lt;br /&gt;
|-&lt;br /&gt;
| typeof function(){} || &amp;lt;code&amp;gt;&amp;quot;function&amp;quot;&amp;lt;/code&amp;gt; || -&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 各プリミティブ型の typeof 結果&lt;br /&gt;
 console.log(typeof &amp;quot;hello&amp;quot;);    // &amp;quot;string&amp;quot;&lt;br /&gt;
 console.log(typeof 42);         // &amp;quot;number&amp;quot;&lt;br /&gt;
 console.log(typeof 123n);       // &amp;quot;bigint&amp;quot;&lt;br /&gt;
 console.log(typeof true);       // &amp;quot;boolean&amp;quot;&lt;br /&gt;
 console.log(typeof Symbol());   // &amp;quot;symbol&amp;quot;&lt;br /&gt;
 console.log(typeof undefined);  // &amp;quot;undefined&amp;quot;&lt;br /&gt;
 console.log(typeof null);       // &amp;quot;object&amp;quot; (歴史的バグ)&lt;br /&gt;
 &lt;br /&gt;
 // nullのチェック&lt;br /&gt;
 const value = null;&lt;br /&gt;
 console.log(value === null);  // true&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== プリミティブ型とオブジェクト型の違い ==&lt;br /&gt;
プリミティブ型とオブジェクト型の根本的な違いは、データの格納方法にある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 値渡しと参照渡し ====&lt;br /&gt;
プリミティブ型の変数には値そのものが直接格納される。&amp;lt;br&amp;gt;&lt;br /&gt;
変数を別の変数に代入すると、値がコピーされる。&amp;lt;br&amp;gt;&lt;br /&gt;
代入後にどちらかを変更しても、もう一方には影響しない。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
一方、オブジェクト型の変数にはメモリ上のアドレス (参照) が格納される。&amp;lt;br&amp;gt;&lt;br /&gt;
変数を別の変数に代入すると、参照がコピーされる。&amp;lt;br&amp;gt;&lt;br /&gt;
2つの変数が同じオブジェクトを指すため、一方の変更がもう一方にも反映される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // プリミティブ型: 値渡し&lt;br /&gt;
 let a = 5;&lt;br /&gt;
 let b = a;                // 値がコピーされる&lt;br /&gt;
 b = 10;&lt;br /&gt;
 console.log(a);           // 5 (変化しない)&lt;br /&gt;
 console.log(b);           // 10&lt;br /&gt;
 &lt;br /&gt;
 // オブジェクト型: 参照渡し&lt;br /&gt;
 let obj1 = { value: 5 };&lt;br /&gt;
 let obj2 = obj1;          // 参照がコピーされる&lt;br /&gt;
 obj2.value = 10;&lt;br /&gt;
 console.log(obj1.value);  // 10 (同じオブジェクトを参照するため変化する)&lt;br /&gt;
 console.log(obj2.value);  // 10&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== ラッパーオブジェクト ====&lt;br /&gt;
string、number、booleanのプリミティブ型には、それぞれ対応するラッパーオブジェクト (&amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;Number&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;Boolean&amp;lt;/code&amp;gt;) が存在する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
プリミティブ値はメソッドやプロパティを持たないが、プロパティへアクセスしようとすると、JavaScriptエンジンが一時的にプリミティブ値をラッパーオブジェクトに変換し、メソッドを呼び出した後に破棄する。&amp;lt;br&amp;gt;&lt;br /&gt;
このプロセスをオートボクシング (autoboxing) と呼ぶ。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
通常、開発者がラッパーオブジェクトを明示的に生成する必要はない。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;new String(&amp;quot;hello&amp;quot;)&amp;lt;/u&amp;gt; のように生成すると、typeofの結果が &amp;lt;code&amp;gt;&amp;quot;object&amp;quot;&amp;lt;/code&amp;gt; になり、プリミティブ値と意図しない差異が生じる可能性がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // オートボクシングの例&lt;br /&gt;
 // プリミティブ値に対してメソッドを呼び出すと、一時的にラッパーオブジェクトが生成される&lt;br /&gt;
 const str = &amp;quot;hello&amp;quot;;&lt;br /&gt;
 console.log(str.toUpperCase());  // &amp;quot;HELLO&amp;quot;&lt;br /&gt;
 console.log(str.length);         // 5&lt;br /&gt;
 // str 自体は変化していない&lt;br /&gt;
 console.log(str);  // &amp;quot;hello&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 // ラッパーオブジェクトとプリミティブの違い&lt;br /&gt;
 const primitiveStr = &amp;quot;hello&amp;quot;;&lt;br /&gt;
 const objectStr = new String(&amp;quot;hello&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 console.log(typeof primitiveStr);  // &amp;quot;string&amp;quot;&lt;br /&gt;
 console.log(typeof objectStr);     // &amp;quot;object&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 console.log(primitiveStr == objectStr);   // true (値比較)&lt;br /&gt;
 console.log(primitiveStr === objectStr);  // false (型が異なる)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 型の自動変換 ==&lt;br /&gt;
JavaScriptでは、演算子やコンテキストに応じて型が自動変換される。&amp;lt;br&amp;gt;&lt;br /&gt;
この動作を型強制 (type coercion) と呼ぶ。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 暗黙的な型変換 ====&lt;br /&gt;
演算子の種類と対象の型によって、自動的に型変換が行われる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // + 演算子: 一方が文字列の場合、文字列連結になる&lt;br /&gt;
 console.log(&amp;quot;5&amp;quot; + 3);         // &amp;quot;53&amp;quot; (3 が文字列に変換される)&lt;br /&gt;
 console.log(&amp;quot;5&amp;quot; + true);      // &amp;quot;5true&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 // - / * / / 演算子: 文字列が数値に変換される&lt;br /&gt;
 console.log(&amp;quot;5&amp;quot; - 3);         // 2 (&amp;quot;5&amp;quot; が数値に変換される)&lt;br /&gt;
 console.log(&amp;quot;5&amp;quot; * &amp;quot;2&amp;quot;);       // 10 (両方数値に変換される)&lt;br /&gt;
 console.log(&amp;quot;hello&amp;quot; - 2);     // NaN (&amp;quot;hello&amp;quot; は数値に変換できない)&lt;br /&gt;
 &lt;br /&gt;
 // 比較演算子&lt;br /&gt;
 console.log(5 &amp;gt; &amp;quot;3&amp;quot;);         // true (&amp;quot;3&amp;quot; が数値に変換される)&lt;br /&gt;
 console.log(&amp;quot;10&amp;quot; == 10);      // true (緩い等価で型変換される)&lt;br /&gt;
 console.log(&amp;quot;10&amp;quot; === 10);     // false (厳密等価では型変換しない)&lt;br /&gt;
 &lt;br /&gt;
 // 論理演算子 (短絡評価)&lt;br /&gt;
 console.log(5 || &amp;quot;default&amp;quot;);  // 5 (truthy 値を返す)&lt;br /&gt;
 console.log(0 || &amp;quot;default&amp;quot;);  // &amp;quot;default&amp;quot; (0 は falsy)&lt;br /&gt;
 console.log(&amp;quot;hello&amp;quot; &amp;amp;&amp;amp; 42);   // 42 (両方 truthy の場合、最後の値を返す)&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 明示的な型変換 ====&lt;br /&gt;
型変換を意図的に行う場合は、グローバル関数またはコンストラクタを使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
暗黙的な型変換に依存するよりも明示的に変換することにより、ソースコードの意図が明確になる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 文字列への変換&lt;br /&gt;
 console.log(String(123));        // &amp;quot;123&amp;quot;&lt;br /&gt;
 console.log(String(true));       // &amp;quot;true&amp;quot;&lt;br /&gt;
 console.log(String(null));       // &amp;quot;null&amp;quot;&lt;br /&gt;
 console.log(String(undefined));  // &amp;quot;undefined&amp;quot;&lt;br /&gt;
 console.log((123).toString());   // &amp;quot;123&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 // 数値への変換&lt;br /&gt;
 console.log(Number(&amp;quot;123&amp;quot;));      // 123&lt;br /&gt;
 console.log(Number(&amp;quot;123.45&amp;quot;));   // 123.45&lt;br /&gt;
 console.log(Number(&amp;quot;&amp;quot;));         // 0 (空文字列は 0 に変換)&lt;br /&gt;
 console.log(Number(&amp;quot;hello&amp;quot;));    // NaN&lt;br /&gt;
 console.log(Number(true));       // 1&lt;br /&gt;
 console.log(Number(false));      // 0&lt;br /&gt;
 console.log(Number(null));       // 0&lt;br /&gt;
 console.log(Number(undefined));  // NaN&lt;br /&gt;
 &lt;br /&gt;
 // parseInt / parseFloat&lt;br /&gt;
 console.log(parseInt(&amp;quot;123abc&amp;quot;));     // 123 (先頭から数値を解析)&lt;br /&gt;
 console.log(parseFloat(&amp;quot;3.14abc&amp;quot;));  // 3.14&lt;br /&gt;
 console.log(parseInt(&amp;quot;abc123&amp;quot;));     // NaN (先頭が数値でない場合)&lt;br /&gt;
 &lt;br /&gt;
 // ブール値への変換&lt;br /&gt;
 console.log(Boolean(0));         // false&lt;br /&gt;
 console.log(Boolean(&amp;quot;&amp;quot;));        // false&lt;br /&gt;
 console.log(Boolean(null));      // false&lt;br /&gt;
 console.log(Boolean(123));       // true&lt;br /&gt;
 console.log(Boolean(&amp;quot;hello&amp;quot;));   // true&lt;br /&gt;
 console.log(Boolean([]));        // true (空配列も true)&lt;br /&gt;
 &lt;br /&gt;
 // BigIntへの変換&lt;br /&gt;
 console.log(BigInt(123));        // 123n&lt;br /&gt;
 console.log(BigInt(&amp;quot;456&amp;quot;));      // 456n&lt;br /&gt;
 // BigInt(12.5);                 // RangeError: 小数は変換できない&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連情報 ==&lt;br /&gt;
* [[JavaScriptの基礎 - 変数宣言]]&lt;br /&gt;
*: let / const / varの宣言方法、スコープ、ホイスティング&lt;br /&gt;
* [[JavaScriptの基礎 - 数値と算術演算子]]&lt;br /&gt;
*: Number型の特性、算術演算子、Mathオブジェクト、BigInt&lt;br /&gt;
* [[JavaScriptの基礎 - 文字列]]&lt;br /&gt;
*: テンプレートリテラル、文字列メソッド、タグ付きテンプレートリテラル&lt;br /&gt;
* [[JavaScriptの基礎 - 比較演算子と論理演算子]]&lt;br /&gt;
*: === / ==の違い、短絡評価、Null合体演算子、オプショナルチェーン&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki&lt;br /&gt;
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板&lt;br /&gt;
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux&lt;br /&gt;
|image=/resources/assets/MochiuLogo_Single_Blue.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[カテゴリ:Web]]&lt;/div&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
</feed>