1642743780
データ型は、少し気が遠くなるような概念になる可能性があります。しかし、プログラマーとして、私たちは毎日データ型を使用しているので、それらは私たちが理解すべきものです。
問題は、コンピュータがこれらのデータ型をどのように保存するかということです。すべてのデータ型を同じように扱うことはできません。
JavaScriptでは、データ型は2つのカテゴリに分割され、コンピュータはそれぞれを異なる方法で処理します。プリミティブデータ型と参照データ型があります。しかし、これらは何ですか?そして、なぜ違いを知ることが重要なのでしょうか?それがこの記事で学ぶことです。
JavaScriptのプリミティブデータ型
これらのデータ型は非常に単純であり、プログラミング言語の実装の最低レベルとして扱われることもあります。それらはオブジェクトではなく、メソッドもありません。
このようなデータ型の例としては、数値、文字列、ブール値、null、およびundefinedがあります。
しかし、文字列にはメソッドがあるため、文字列について疑問に思われるかもしれません。実際、JavaSvriptはプリミティブ文字列を文字列オブジェクトに変換するため、文字列オブジェクトメソッドを使用できます。
JavaScriptではプリミティブデータ型はどのように扱われますか?
JavaScriptでプリミティブデータ型を宣言すると、スタックに格納されます。スタックは、コンピューターがデータをすばやく格納および取得するために使用する単純なデータ構造です。
スタック上のプリミティブデータ型は、プログラムでの宣言に使用した変数名によって識別されます。作成するプリミティブデータ型ごとに、データがスタックに追加されます。
これを実装するには、変数を宣言し、numOne
それに値50を指定するとします。次に別の変数を作成numTwo
し、同じ値50を割り当てます。したがって、両方の変数の値は同じです。
スタックで何が起こるかというと、コンピューターはそのためのスペースを作成しnumOne
、割り当てられた値をスタックに格納します。がnumTwo
作成されると、コンピューターは再び部屋を作成し、スタックに50を格納します。両方の変数に同じ値が割り当てられているかどうかは関係ありません。
numOne
コーディングプロセス中に、100という値を更新することにした場合はどうなりますか?numTwo
変わるということですか?答えはいいえだ。
numOne
とはスタックに異なる方法で格納されているためnumTwo
、一方を更新しても他方には影響しません。そして、コードエディタで実際に試してみると、それを試すことができます。
numOne
コンソールにログを記録すると100が出力され、ログに記録numTwo
すると50が出力されます。したがって、実際には、2つの変数は相互に関係がありません。
let numOne = 50;
let numTwo = numOne; //numTwo=numOne=50
numOne = 100;
console.log(numOne); //outputs 100
console.log(numTwo); //outputs 50
プリミティブデータ型の処理がいかに簡単であるかを見てきたので、同様に参照データ型がどのように機能するかを見てみましょう。
JavaScriptの参照データ型
参照データ型は、プリミティブデータ型とは異なり、本質的に動的です。つまり、サイズは固定されていません。
それらのほとんどはオブジェクトと見なされるため、メソッドがあります。このようなデータ型の例には、配列、関数、コレクション、およびその他すべての種類のオブジェクトが含まれます。
プリミティブデータ型と参照データ型の違いは何ですか?
違いは、コンピューターが参照データ型を格納する必要がある場合に発生します。変数を作成して参照データ型の値を割り当てると、コンピューターはそのデータ型をその変数に直接格納しません(プリミティブ型の場合のように)。
その変数に割り当てたのは、メモリ内のそのデータ型の場所を指すポインタです。紛らわしい?知っている。
上の画像でわかるように、現在2つのデータ構造があります。スタックとヒープ。たとえば、オブジェクトを宣言したとします。オブジェクト自体はヒープに格納され、そのポインタはスタックに格納されます。ポインタはオブジェクトの変数名で識別され、そのオブジェクトを指します。
これで、変数、を作成しobject1
、それにオブジェクトを割り当てることができます。前と同じように、別の変数を作成してobject2
、に割り当てobject1
ます。これは、ヒープ上に別のオブジェクトが作成されることを意味しますか?答えはいいえだ。
オブジェクトはすでにヒープ上に存在し、object2
両方object1
が同じオブジェクトを指しているためです。
を更新すると、もう1つの違いが生じobject1
ます。両方の変数をコンソールに記録すると、変更が両方に影響したことがわかります。これは、ヒープ上の同じオブジェクトを指しているためです。もちろん、一方の変数を更新すると、もう一方の変数にも影響します。
let object1 = {
name:'Bingeh',
age:18
};
let object2 = object1;
//updating object1,
object1.age = 20;
console.log(object2); //we see that object2 also updates the age attribute
まとめ
これで、プリミティブデータ型と参照データ型の違いがわかりました。特に「nullポインタ参照」のようなエラーが発生した場合は、これらの違いを知っておくことが重要です。そうすれば、なぜそれらが発生しているのかを理解できます。
これはJava開発者に時々起こるので、この記事が疑問を解決するのに役立つことを願っています。
リンク:https ://www.freecodecamp.org/news/primitive-vs-reference-data-types-in-javascript/
1642743780
データ型は、少し気が遠くなるような概念になる可能性があります。しかし、プログラマーとして、私たちは毎日データ型を使用しているので、それらは私たちが理解すべきものです。
問題は、コンピュータがこれらのデータ型をどのように保存するかということです。すべてのデータ型を同じように扱うことはできません。
JavaScriptでは、データ型は2つのカテゴリに分割され、コンピュータはそれぞれを異なる方法で処理します。プリミティブデータ型と参照データ型があります。しかし、これらは何ですか?そして、なぜ違いを知ることが重要なのでしょうか?それがこの記事で学ぶことです。
JavaScriptのプリミティブデータ型
これらのデータ型は非常に単純であり、プログラミング言語の実装の最低レベルとして扱われることもあります。それらはオブジェクトではなく、メソッドもありません。
このようなデータ型の例としては、数値、文字列、ブール値、null、およびundefinedがあります。
しかし、文字列にはメソッドがあるため、文字列について疑問に思われるかもしれません。実際、JavaSvriptはプリミティブ文字列を文字列オブジェクトに変換するため、文字列オブジェクトメソッドを使用できます。
JavaScriptではプリミティブデータ型はどのように扱われますか?
JavaScriptでプリミティブデータ型を宣言すると、スタックに格納されます。スタックは、コンピューターがデータをすばやく格納および取得するために使用する単純なデータ構造です。
スタック上のプリミティブデータ型は、プログラムでの宣言に使用した変数名によって識別されます。作成するプリミティブデータ型ごとに、データがスタックに追加されます。
これを実装するには、変数を宣言し、numOne
それに値50を指定するとします。次に別の変数を作成numTwo
し、同じ値50を割り当てます。したがって、両方の変数の値は同じです。
スタックで何が起こるかというと、コンピューターはそのためのスペースを作成しnumOne
、割り当てられた値をスタックに格納します。がnumTwo
作成されると、コンピューターは再び部屋を作成し、スタックに50を格納します。両方の変数に同じ値が割り当てられているかどうかは関係ありません。
numOne
コーディングプロセス中に、100という値を更新することにした場合はどうなりますか?numTwo
変わるということですか?答えはいいえだ。
numOne
とはスタックに異なる方法で格納されているためnumTwo
、一方を更新しても他方には影響しません。そして、コードエディタで実際に試してみると、それを試すことができます。
numOne
コンソールにログを記録すると100が出力され、ログに記録numTwo
すると50が出力されます。したがって、実際には、2つの変数は相互に関係がありません。
let numOne = 50;
let numTwo = numOne; //numTwo=numOne=50
numOne = 100;
console.log(numOne); //outputs 100
console.log(numTwo); //outputs 50
プリミティブデータ型の処理がいかに簡単であるかを見てきたので、同様に参照データ型がどのように機能するかを見てみましょう。
JavaScriptの参照データ型
参照データ型は、プリミティブデータ型とは異なり、本質的に動的です。つまり、サイズは固定されていません。
それらのほとんどはオブジェクトと見なされるため、メソッドがあります。このようなデータ型の例には、配列、関数、コレクション、およびその他すべての種類のオブジェクトが含まれます。
プリミティブデータ型と参照データ型の違いは何ですか?
違いは、コンピューターが参照データ型を格納する必要がある場合に発生します。変数を作成して参照データ型の値を割り当てると、コンピューターはそのデータ型をその変数に直接格納しません(プリミティブ型の場合のように)。
その変数に割り当てたのは、メモリ内のそのデータ型の場所を指すポインタです。紛らわしい?知っている。
上の画像でわかるように、現在2つのデータ構造があります。スタックとヒープ。たとえば、オブジェクトを宣言したとします。オブジェクト自体はヒープに格納され、そのポインタはスタックに格納されます。ポインタはオブジェクトの変数名で識別され、そのオブジェクトを指します。
これで、変数、を作成しobject1
、それにオブジェクトを割り当てることができます。前と同じように、別の変数を作成してobject2
、に割り当てobject1
ます。これは、ヒープ上に別のオブジェクトが作成されることを意味しますか?答えはいいえだ。
オブジェクトはすでにヒープ上に存在し、object2
両方object1
が同じオブジェクトを指しているためです。
を更新すると、もう1つの違いが生じobject1
ます。両方の変数をコンソールに記録すると、変更が両方に影響したことがわかります。これは、ヒープ上の同じオブジェクトを指しているためです。もちろん、一方の変数を更新すると、もう一方の変数にも影響します。
let object1 = {
name:'Bingeh',
age:18
};
let object2 = object1;
//updating object1,
object1.age = 20;
console.log(object2); //we see that object2 also updates the age attribute
まとめ
これで、プリミティブデータ型と参照データ型の違いがわかりました。特に「nullポインタ参照」のようなエラーが発生した場合は、これらの違いを知っておくことが重要です。そうすれば、なぜそれらが発生しているのかを理解できます。
これはJava開発者に時々起こるので、この記事が疑問を解決するのに役立つことを願っています。
リンク:https ://www.freecodecamp.org/news/primitive-vs-reference-data-types-in-javascript/