Primitive type/reference type 2022.03.03
2384 ワード
元のタイプとオブジェクトのタイプ
元のタイプの値は変更できない値です.オブジェクトタイプの値は変更可能な値です.
元の値
変数の名前は、値を格納するために保持されるメモリ領域自体またはそのメモリ領域を識別するために使用されます.値は変数に格納されたデータであり、式の評価によって生成された結果です.変数は、いつでも再割り当てによって変数値を置き換えることができます.変更不可は変数ではなく、値についてです.読み取り専用です.
元の値を割り当てる変数に新しい元の値を再割り当てすると、メモリ領域に格納された再割り当て前の元の値を変更するのではなく、新しい再割り当て元の値を指します.変数が参照するメモリ領域アドレスが変更されます.
文字列は似た配列であるため、配列に似たインデックスを使用して各文字にアクセスできます.
ただし、文字列は<元の値>なので変更できません.エラーは発生しません.
オブジェクト
オブジェクトは、数のプロセスを指定することなく動的に追加および削除できます.したがって、オブジェクトは元の値のように確保するメモリ領域のサイズを事前に決定することはできません.
オブジェクトは変更可能な値です.したがって、オブジェクトを割り当てる変数は、再割り当てすることなく、オブジェクトを直接変更できます.すなわち、再割り当てを行わずにpropertyを動的に追加したり、property値を更新したりすることができます.
リファレンス値
オブジェクトの変数が格納されているメモリアドレスを割り当ててメモリ領域にアクセスすることで、参照値にアクセスできます.参照値は、作成したオブジェクトのメモリ領域を格納するアドレスです.
割り当てられたオブジェクトの変数は、「変数参照オブジェクト」として表示されます.
構造欠陥に対する設計と副作用
メモリを効率的に消費するために、オブジェクトは変更可能な値に設計されていますが、対応する副作用もあります.元の値とは異なり、複数の識別子が1つのオブジェクトを共有できます.
複数の識別子が1つのオブジェクトを共有しますか?
浅い放射線と深い放射線?
私は浅福深福を理解していません.グーグルでいろいろなことをしましたが、javascriptのオブジェクト管理方式、ハッシュテーブル、ディック・シャナリーV 8エンジンに着きました.したがって、クラスセグメントオフセットを非表示に...メモリ...そしていきなりjavascriptエンジンって言ったっけ?コンピュータの動作原理は何ですか.に着くどうしよう.
私は勉強しながら、CSに関する基礎知識を学ぶべきだと思います.でも何を勉強するか分からない.勉強しても、いつも毎日初心者になってワクワクします.
元のタイプの値は変更できない値です.オブジェクトタイプの値は変更可能な値です.
元の値
変数の名前は、値を格納するために保持されるメモリ領域自体またはそのメモリ領域を識別するために使用されます.値は変数に格納されたデータであり、式の評価によって生成された結果です.変数は、いつでも再割り当てによって変数値を置き換えることができます.変更不可は変数ではなく、値についてです.読み取り専用です.
元の値を割り当てる変数に新しい元の値を再割り当てすると、メモリ領域に格納された再割り当て前の元の値を変更するのではなく、新しい再割り当て元の値を指します.変数が参照するメモリ領域アドレスが変更されます.
文字列は似た配列であるため、配列に似たインデックスを使用して各文字にアクセスできます.
ただし、文字列は<元の値>なので変更できません.エラーは発生しません.
var str = 'string';
str[0] = 'S';
console.log(str); // string
値で渡す?var score = 80;
//copy 변수에는 score 변수의 값 80이 복사되어 할당된다.
var copy = score;
console.log(score, copy); //80 80
console.log(score === copy); // true
// score 변수와 copy 변수의 값은 다른 메모리 공간에 저장된 별개의 값이다.
// 따라서 score 변수의 값을 변경해도 copy 변수의 값에는 어떠한 영향도 주지 않는다.
score = 100;
console.log(score, copy); // 100 80
この2つの変数は、変数の値をコピーして割り当てても、異なるメモリ領域に格納される別の値です.オブジェクト
オブジェクトは、数のプロセスを指定することなく動的に追加および削除できます.したがって、オブジェクトは元の値のように確保するメモリ領域のサイズを事前に決定することはできません.
オブジェクトは変更可能な値です.したがって、オブジェクトを割り当てる変数は、再割り当てすることなく、オブジェクトを直接変更できます.すなわち、再割り当てを行わずにpropertyを動的に追加したり、property値を更新したりすることができます.
リファレンス値
オブジェクトの変数が格納されているメモリアドレスを割り当ててメモリ領域にアクセスすることで、参照値にアクセスできます.参照値は、作成したオブジェクトのメモリ領域を格納するアドレスです.
割り当てられたオブジェクトの変数は、「変数参照オブジェクト」として表示されます.
構造欠陥に対する設計と副作用
メモリを効率的に消費するために、オブジェクトは変更可能な値に設計されていますが、対応する副作用もあります.元の値とは異なり、複数の識別子が1つのオブジェクトを共有できます.
複数の識別子が1つのオブジェクトを共有しますか?
var person = {
name: 'kim'
}
var copy = person;
person.sayHi = function(){console.log('hi')}
console.log(person === copy)
// true
2つの変数値のメモリアドレスは異なりますが、同じ参照値があります.すなわち、2つの識別子は1つのオブジェクトを共有する.var person1 = {
name: 'kim'
}
var person2 = {
name: 'kim'
}
person1 === person2 // false
//일치 비교 연산자는 객체를 할당한 변수를 비교하면 "참조 값"을 비교한다.
person1.name === person2.name // true
// 프로퍼티 값을 참조하는 person1.name 등은 값으로 평가될 수 있는 표현식이다. 두 표현식 모두 원시 값 'Lee'로 평가된다.
浅い放射線と深い放射線?
私は浅福深福を理解していません.グーグルでいろいろなことをしましたが、javascriptのオブジェクト管理方式、ハッシュテーブル、ディック・シャナリーV 8エンジンに着きました.したがって、クラスセグメントオフセットを非表示に...メモリ...そしていきなりjavascriptエンジンって言ったっけ?コンピュータの動作原理は何ですか.に着くどうしよう.
私は勉強しながら、CSに関する基礎知識を学ぶべきだと思います.でも何を勉強するか分からない.勉強しても、いつも毎日初心者になってワクワクします.
Reference
この問題について(Primitive type/reference type 2022.03.03), 我々は、より多くの情報をここで見つけました https://velog.io/@bumikim26/Primitive-type-reference-type-2022.03.03テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol