ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript のさまざまなデータ型。
JavaScript にはさまざまなデータ型があります。
プリミティブ型: 文字列、数値、ブール値、未定義、null、シンボル、bigint。
参照型: オブジェクト、関数、配列。
プリミティブ型は、JavaScript の最も基本的なデータ型です。それらは不変です。これは、プリミティブ値が作成されると、変更できないことを意味します。これを変数の再割り当てと混同しないでください。変数の再割り当ては、プリミティブ型の値を変更することと同じではありません。
let str = "hello"; str = "Hello"; // str -> "Hello"
この例では、変数 str を新しい値に再割り当てしています。これはまったく問題ありません。
let str1 = "hello"; let str2 = "hello";
ここには、同じ値を持つ 2 つの変数 str1 と str2 があります。 JavaScript では、2 つのプリミティブ値が同じであれば、それらは等しいです。内部的には両方の変数が同じメモリ位置を指しているため、これらは等しいです。
同じ文字列はメモリ内に再作成されません。これらはメモリに一度だけ保存されます。 JavaScript エンジニアは、文字列インターニング と呼ばれる手法を使用してメモリ使用量を最適化します。この手法は数字にも使用されます。
let str = "hello"; str[0] = "H"; // str -> "hello"
文字列は作成後に変更することはできません。この例では、文字列 str の最初の文字を「H」に変更しようとしています。これではうまくいきません。文字列 str は変わりません。プリミティブ型は不変です。
新しい文字列を作成する必要がある場合は、明示的に作成できます。
let newStr = "H" + str.slice(1); // newStr -> "Hello"
参照型は変更可能です。これは、参照型の値を変更できることを意味します。これらは、メモリ内に参照として格納されていることを強調するために、参照型と呼ばれます。文字列も参照として保存されますが、文字列は不変であり、インターニング手法を使用して、メモリ内に同一の値が再作成されることを回避します。
let obj1 = { name: "John" }; let obj2 = { name: "John" };
ここで、obj1 と obj2 は 2 つの異なるオブジェクトです。これらは異なるメモリ場所に保存されます。オブジェクトは値ではなく参照によって比較されるため、同じプロパティと値を持っていても、等価ではありません。
let obj1 = { name: "John" }; let obj2 = obj1;
ここでは、obj1 と obj2 は同じオブジェクトです。どちらの変数も同じメモリ位置を指します。この場所の値を変更すると、両方の変数に反映されます。
obj2.name = "Jane"; // obj1 -> { name: "Jane" }, obj2 -> { name: "Jane" }
メモリ内でこれがどのように見えるかを視覚化するには:
Memory location 1: { name: "John" } obj1 -> Memory location 1 obj2 -> Memory location 1
アップデートにより:
let str = "hello"; str = "Hello"; // str -> "Hello"
メモリ位置 1 の値を更新しました。obj1 と obj2 はどちらも同じメモリ位置を参照しているため、この変更が反映されるのは当然です。
プリミティブ型は不変であり、文字列インターニングなどの手法によりメモリ使用量が最適化されているのに対し、参照型は可変性と共有参照により柔軟性を高めます。これらの概念をマスターすることで、コードの動作をより適切に予測および制御できるようになり、より堅牢で保守しやすいアプリケーションが実現します。
以上がJavaScript のさまざまなデータ型。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。