Skip to content
This page has been auto-translated and may contain errors.View in English

データ型

docs.scrimba.com

誰かの名前、年齢、ログインしているかどうかを保存すれば、すでに 3 つの異なる値の種類を使用していることになります。名前はテキスト、年齢は数値、ログインフラグは yes か no です。JavaScript はこれらのそれぞれを異なるとして扱い、それぞれを異なる方法で処理します。この章では、最初に出会う型のいくつかと、どの型を保有しているかを判定する方法についてです。

基本的な型

3 つの型がほとんどのデータをカバーします。**文字列**はテキストで、引用符で囲まれています。数値は任意の数字で、カウントまたは計算に使用します。ブール値は yes/no の値で、true または false の 2 つのオプションしかありません。

js
const name = "太郎"; // 文字列:テキスト
const age = 27; // 数値
const isLoggedIn = true; // ブール値:true または false

文字列は名前、メッセージ、色など、テキストのように見える何でも使用します。数値は数えたり計算したりするものに使用します。ブール値は、ボックスがチェックされているかどうかなど、2 つのオプションの 1 つが答えの場合に使用します。これについては文字列数値でさらに詳しく見ていきます。

JavaScript の日常的な値はいくつかの****に分類され、そのうち 3 つがほとんどのデータを運びます。文字列は引用符で囲まれたテキストで、シングルでもダブルでも構いません。数値は任意の数値です。ブール値truefalse のちょうど 2 つの値のうちの 1 つです。

js
const productName = "ワイヤレスマウス"; // 文字列
const price = 24.99; // 数値
const inStock = true; // ブール値

各型には用途があります。文字列は表示または読み取るテキストを保有し、文字列で説明されています。数値は計算するものを保有し、数値で説明されています。ブール値は 2 つの方法の答えを保有し、決定が行われるあらゆる場所に現れます。price < 30 のような比較は 1 つを生成するためです。

JavaScript は値をいくつかの****に分類し、そのうち 3 つがほとんどのデータを占めます。文字列は引用符(シングル、ダブル、またはテンプレートリテラル用のバッククォート)で囲まれた文字のシーケンスです。数値は数値です。ブール値true または false の 2 つの値のいずれかです。

js
const currency = "JPY"; // 文字列
const balance = 1499.5; // 数値
const isOverdrawn = balance < 0; // ブール値、ここでは比較の結果

文字列と数値の区別は最初の見た目より重要です。"5"5 は異なる動作をするためです。1 つはたまたま数字を含むテキストで、もう 1 つは計算できる値です。ブール値は手で入力することはめったにないため、早めに気付く価値があります。比較と論理チェックから出てくるため、balance < 0 を「ブール値」として読む能力があれば、後の条件と演算子が機能するようになります。

Juno基本的な型 常に使う 3 つ:引用符のテキスト用 string、任意の数値用 numbertrue または false の答え用 boolean。保存するものの種類に合う型を選びます。名前は文字列、年齢は数値、チェックボックスはブール値です。
Juno基本的な型 ほとんどの作業を行う 3 つの型:テキスト用 string、数値用 numbertrue または false の 1 つ用 boolean。引用符が文字列を作り、"5" はテキストであって数値ではありません。ブール値は通常、入力したものではなく比較の結果として出現します。
Juno基本的な型 文字列、数値、ブール値がほとんどのデータを運び、問題が生じるのは文字列と数値の境界線です:"5" はテキスト、5 は計算です。balance < 0 のような比較がブール値を渡すため、ブール値リテラルを書くことはほぼありません。比較を「これはブール値」と読むことが、後の条件をすんなり理解させます。

何もない:null と undefined

値が見つからない場合もあり、JavaScript には 2 つの言い方があります。undefined は値がまだ与えられていないことを意味します。値を設定せずに変数を作成すると、その値は undefined です。

js
let score;
console.log(score); // undefined

null は意図的に空であることを意味します。自分で使い、「これは今値がなく、意図的です」と言います。

js
let winner = null;
console.log(winner); // null

簡潔に言うと:undefined は JavaScript が「ここにはまだ何もない」と言うことで、null はあなたが「ここに意図的に何もない」と言うことです。

2 つの値は両方とも「値がない」を表し、その違いは誰が設定したかです。undefined は JavaScript がデフォルトで与えるものです。例えば、値を設定せずに宣言された変数は undefined で始まります。

js
let selectedColor;
console.log(selectedColor); // undefined

null は自分で割り当てる値で、何かを意図的に空にしたか、まだ埋めていないスロットとしてマークします。

js
let couponCode = null;
console.log(couponCode); // null

undefined はデフォルトの不在;null は意図的な不在です。その分割は有用な読み方です:undefined を見ると、何かが設定されていません;null を見ると、誰かそれを空にすることを選びました。

nullundefined は両方とも不在を表し、それらを分ける規約は意図についてです。undefined は JavaScript が自ら生成する不在です。宣言されたが割り当てられていない変数、欠落しているプロパティ、何も返さない関数。

js
let discount;
console.log(discount); // undefined

null は意図的に割り当てた不在で、「未着手」ではなく「意図的に空」を示します。

js
let appliedCoupon = null;
console.log(appliedCoupon); // null

2 つを分けることはコードベースの実際の信号です:undefined は誰もこれを設定していないことを示す傾向があり、バグや未完成のパスを指し示す可能性があります。一方 null は検討済みの選択肢として読まれます。また、後のチェック時に同じように動作しないため、それらを混在させると比較と演算子が場面に入ると混乱が生じます。undefined をマシンのデフォルト、null を明示的な「空」として扱えば、それらの動作がランダムに感じなくなります。

Juno何もない:null と undefined 「値がない」と言う 2 つの方法。undefined は、まだ何も設定されていない場合の JavaScript のデフォルトです。null は「意図的に空」を意味するために自分で書くものです。変数に値を与えなかったら、undefined を期待します。
Juno何もない:null と undefined 両方とも不在を意味し、その違いは誰が設定したかです。undefined は独自に表示されます。値なしで宣言された変数など。null は何かを意図的に空にしたことをマークするために割り当てるものです。その方法で読むと、不在が事故だったか選択だったかがわかります。
Juno何もない:null と undefined 規約が重い仕事をします:undefined は JavaScript が与える不在、null は意図的に割り当てた不在です。だから undefined はバグの可能性がある「誰もこれを設定していない」を示す傾向があります。一方 null は意図として読まれます。それらを区別しておけば、後の比較があなたを驚かせることはありません。

typeof で型をチェックする

値の型が不確定な場合、typeof がそれを教えてくれます。値の前に置くと、その型の名前を示すストリングを返します。

js
console.log(typeof "太郎"); // "string"
console.log(typeof 27); // "number"
console.log(typeof true); // "boolean"

答えは常にテキストで、"number" のような**文字列**であって、型自体ではないことに注意してください。これは何を扱っているかをそれを使用する前にチェックしたい場合に便利です。

typeof は値の型を文字列として報告します。任意の値の前に置くと、"string""number""boolean" などが返されます。

js
const label = "checkout";
console.log(typeof label); // "string"
console.log(typeof 24.99); // "number"
console.log(typeof false); // "boolean"
console.log(typeof undefined); // "undefined"

今知る価値のある 1 つの****があります。最初の一度は驚きます:typeof null"null" ではなく "object" です。

js
console.log(typeof null); // "object"

これは言語の長年のバグで、それを修正すると古いコードが壊れるため、修正されることはありませんでした。あなたが何か間違ったわけではありません。typeof null が嘘をつくことを覚えておき、必要なときは null を直接チェックしてください。

typeof は値を取り、その型の名前を示す文字列を返します。実行時に「何を保有しているのか」と聞く最速の方法です。

js
console.log(typeof "checkout"); // "string"
console.log(typeof 1499.5); // "number"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"

覚えなければならない 1 つの結果は異例です:typeof null"null" ではなく "object" を返します。

js
console.log(typeof null); // "object"

これは**歴史的な癖**で、JavaScript の最初のバージョンに焼き付けられたバグで、多くの既存コードが今その間違った答えに依存しているため、決して修正されませんでした。実際の結果は typeof だけでは値が null であることを判定できないため、代わりに直接の比較でそれをチェックします。これは JavaScript の後方互換性のトレードオフの古典的な例で、既知の間違いは Web を壊すため そのままです。

Junotypeof で型をチェックする 値の前に typeof を置くと、"number" のような文字列として型を教えてくれます。確実でない場合に何を保有しているかをチェックする最速の方法です。答えは常にテキストなので、typeof 27"number" を与えます。引用符と一緒に。
Junotypeof で型をチェックするtypeof は型を文字列として返すため、値を使う前にチェックできます。1 つの罠に注意:typeof null"null" ではなく "object" です。これは言語が互換性のために保ったバグなので、typeof をそこで信頼するのではなく、null を直接テストしてください。
Junotypeof で型をチェックするtypeof は実行時に「これはどの型か」を文字列で答えます。覚えるべき 1 つの間違った結果:typeof null"object" です。これは最初のバージョンバグで、修正すると Web が壊れるため凍結されています。ですので null を確認することはできません;代わりに直接の比較でそれをチェックしてください。

型の大きな図

文字列、数値、ブール値、および nullundefined など日常的な型に出会いました。これは小さなプログラムが必要な大部分を保存するのに十分です。後の章では値をグループ化する方法を追加しますが、これらの各グループはあなたがすでに見た単純な型から構築されます。

今のところ、勝利は每個の値が型を持ち、型がその値で何ができるかを決定することを知ることです。数値は追加できます;文字列は一緒に結合できます;ブール値をチェックできます。演算子を次のステップとして心に留めてください。それは値の結合を開始する場所だからです。

これまでのところ、文字列、数値、ブール値、null、および undefined は**プリミティブ型**です。シンプルで単一の値。JavaScript にはまた非プリミティブ型がありますが、配列やオブジェクトのような値の集合を保持しており、それらは異なる動作をします。それらは独自の章でカバーされ、そこに到達したときに学ぶ価値がある方法で異なる動作をします。

1 つのことを今クリアアップしてください:number は単一の型です。JavaScript は一部の言語がするのと同様に、全数と小数を分割しないため、1010.5 は両方とも同じ number 型です。これは数値をより簡単に理解できるようにし、1 つの型がすべての数値をカバーします。

ここでカバーされている型、文字列、数値、ブール値、null、および undefined は**プリミティブ型です。単一の独立した値。他のすべての配列とオブジェクトは参照型**で、集合を保有し、コピーまたは比較するときに異なるように動作します。その違いは多くの驚きの原因であり、これらの型が到着したときに独自の処理を取得します。

型がテーブルにある間に、フラグする価値のあることはいくつかあります。number はすべての数値に対する 1 つの型で、全数でも小数でも、理由とする別の整数型はありません。数値でカバーされています。2 つのさらにプリミティブ、通常の数値に対して大きすぎる整数用 bigint、およびユニークキー用 symbol が存在します。型は固定されていません:JavaScript は特定の状況で 1 つを別の状況に変換します。これは強制型変換(coercion)と呼ばれる動作です(例えば、それらを結合するときに数値を文字列に回す)。これは実際の結果があり、演算子はそれが重要になる場所です。

Juno型の大きな図 每個の値は型を持ち、型はそれで何ができるかを決定します。数値を追加し、文字列を結合し、ブール値をチェックします。日常的な型、文字列、数値、ブール値、および nullundefined は、小さなプログラムが保存するものの大部分をカバーします。後の章は値をグループ化しますが、これらはすべてこれらから構築されています。
Juno型の大きな図 文字列、数値、ブール値、null、および undefined の 5 つはプリミティブ型です。シンプルな単一の値。配列とオブジェクトは非プリミティブで、後で来て、異なるように動作します。便利な事実:number1010.5 の両方の 1 つの型なので、追跡する個別の整数と小数はありません。
Juno型の大きな図 プリミティブは単一の値です;配列とオブジェクトは参照型で、異なるコピーと比較をしており、驚きはそこに住んでいます。number はすべての数値をカバーし、bigintsymbol は稀なケース用に存在します。型はまた互いに変換され、強制型変換と呼ばれ、演算子はそれが重要になる場所なので、心の奥底にそれを置いておいてください。

型がここからどう進むか

書くあらゆる値、返されるあらゆる値は型を持ち、その名前をつけるのにうまくなることはあとに続く全てのベースです。次の 2 つの章は最も扱うようになるものを深く掘り下げます。テキストで作業するための文字列、および計算のための数値。その後、演算子は、これらの型が互いに対面し、比較し、結合し、時々変換する場所であり、どの型を保有しているかを知ることはそれがあなたを驚かせることから保ちます。