1-基本タイプと参照タイプの挙動が異なる原因:研究
13061 ワード
以上のコードには、卒業後1ヶ月以内に就職する会議があります.学習を行い、欲しい本を学び、出題内容を面接し、面接を模擬するシステム.
だから私たちが選んだ本はコアJavaScript-鄭在南です
JavaScriptを根本的に理解したいなら、この本で勉強することをお勧めします.😃 それでは🙌
データ型のタイプ
メモリの空き領域を解放し、その領域の識別子をaとして宣言します.
「abc」データを aと呼ばれる空間に入れ、 ドルの急騰を割り当てた.
JavaScriptでは、デジタルデータは64ビットのスペースを保持していますが、文字列の場合、英語と韓国語だけを見ても占めるビット数は変わりませんので、容量も総字数も可変です.
データ領域を事前に取得した場合は、データの変換時にそのサイズで拡張し続ける必要があります.
また、変更されたデータが最後の場合は、データ量を増やすだけでよいが、中間のデータが変化した場合は、後に記憶されているデータをすべて後に移動し、すべてのアドレスを識別子に再接続する必要がある.
値が変更されると、無条件に新しい独立した空間を作成して記憶することで、データ変換を自由に行うことができ、メモリをより効率的に管理するために、直接値を入れる必要がなく、単独でデータを記憶し、注入値に関連付けることができます.
変数と定数は不変性ですか?
エントリーレベル:エントリーレベルデータのリフト値を変更するのではなく、値を変更してエントリーレベルデータのリフト値 に変換する.参照型:参照型の主切り上げとは、データセットの別の主切り上げを指すので、データセットが異なる主切り上げに変換される限り、識別子を持つ空間の主切り上げは、以前と同じ参照値の主切り上げとなり、変更可能な可変値といえる.
2"""""""""
3πυυυυυυυυυυυυυ\
データ4」5があるため、株価の上昇をcに与えた.
5υ⃣7υυυυυυυυυυυυυ
1️⃣, 2️⃣
3️⃣ , 4️⃣
基本変数と参照変数のレプリケーションの比較
changeName 1:内部propertyを直接変更し、既存のデータの内容を変更します. changeName 2:内部プログラムを持って新しい 上のコードの残念な点は、changeName 2のnameと性別がハードコーディングされていることです.これを改善するために、すべてのpropertyをコピーする関数を作成することが望ましいです.
本の中には浅いコピーと深いコピーの内容があり、他のブログの内容や頭の中で整理する必要があり、かなり長くなる可能性があり、次の編で書く必要があります.
だから私たちが選んだ本はコアJavaScript-鄭在南です
JavaScriptを根本的に理解したいなら、この本で勉強することをお勧めします.😃 それでは🙌
データ型のタイプ
きほんがた
(元のタイプ:元のタイプ)
数値、文字列、ブール値、null、undefined、構成部品(ES 6に追加)
参照タイプ
(reference type)
オブジェクト、配列、関数、日付、正規表現など
基本型は割り当てや計算時にコピーされ、参照型はより深い面でコピーされます.
基本型は値を含む湧出値を直接コピーし,参照型は値を含む湧出値からなる組合せの湧出値を指す.
🤔 なぜ独自のメモリの切り上げを使用してデータを格納するのですか?
メモリは複数のビットで構成されており、メモリのプライマリ周波数値によってその位置がわかります.
△雑談語とは、コンピュータの言語が0,1で構成されており、ビット単位で位置決めされていると、非常に無効になります.
そのため、ビットを適切に組み合わせて、検索時間を減らす方法が考えられます.この単位は現在バイトです.)
データ割当てフロー let a; // 1️⃣ 변수 a 선언
a = 'abc'; // 2️⃣ 변수 a에 데이터 할당
let a = 'abc'; // 3️⃣ 1, 2를 한 문장을 표현
let a; // 1️⃣ 변수 a 선언
a = 'abc'; // 2️⃣ 변수 a에 데이터 할당
let a = 'abc'; // 3️⃣ 1, 2를 한 문장을 표현
「abc」データを
JavaScriptでは、デジタルデータは64ビットのスペースを保持していますが、文字列の場合、英語と韓国語だけを見ても占めるビット数は変わりませんので、容量も総字数も可変です.
データ領域を事前に取得した場合は、データの変換時にそのサイズで拡張し続ける必要があります.
また、変更されたデータが最後の場合は、データ量を増やすだけでよいが、中間のデータが変化した場合は、後に記憶されているデータをすべて後に移動し、すべてのアドレスを識別子に再接続する必要がある.
値が変更されると、無条件に新しい独立した空間を作成して記憶することで、データ変換を自由に行うことができ、メモリをより効率的に管理するために、直接値を入れる必要がなく、単独でデータを記憶し、注入値に関連付けることができます.
変数と定数は不変性ですか?
この概念は本当に難しいが,変数と定数を不変性に分けることはできない.
それはどのような出発点に分かれますか?
変数/定数の区別
まず,この2つの区別の重点は変更性にある.
一度に、データ割り当ては、割り当てられた変数空間に他のデータを再割り当てできるかどうかに分割されます.
定数は通常JSでconstとして用いられ,定数自体は不変値ではなく,データの基本形式に不変性があると誤解される可能性がある.
非不変性の違いは何ですか?
可変値不変値というものは見えないので、抽象的に考えると整理しにくいです
きほんデータわりあてりゅう
let a = 'abc'; // 1️⃣
a = a + 'def'; // 2️⃣
let b = 5; // 3️⃣
let c = 5; // 4️⃣
b = 7; // 5️⃣
1」「abc」というデータの急上昇値を識別子aに与える空間は、急上昇値として与えられる2"""""""""
3πυυυυυυυυυυυυυ\
データ4」5があるため、株価の上昇をcに与えた.
5υ⃣7υυυυυυυυυυυυυ
リファレンスデータ割当てフロー
let obj1 = { // 1️⃣
a: 1,
b: 'bbb'
}
obj1.a = 2; // 2️⃣
let nestingObj = { // 3️⃣
x: 3,
arr: [ 3, 2 ],
};
nestingObj.arr = 'str'; // 4️⃣
1️⃣, 2️⃣
3️⃣ , 4️⃣
基本変数と参照変数のレプリケーションの比較
変数をコピーするプロセス基本型と参照型のデータは同じアドレスを持っていますが、データ割り当ての過程では異なり、変数をコピーした後の動作には大きな違いがあります.
複数回後の再割り当ての違い
オブジェクトのプロパティの変更
let a = 10;
let b = a;
let obj1 = { c: 10, d: 'ddd' };
let obj2 = obj1;
b = 15;
obj2.c = 20;
property変更の際、前に書いたような基本型は、データの主湧値参照型がデータビームの主湧値をもたらし、基本型がデータ変更後、主湧値が変更され、参照型が内挿のみ変更され、表面的にはデータの主湧値は変更されないので、以下のようになります.console.log(a === b); // false
console.log(obj1 === obj2); // ture
オブジェクト自体を変更する場合
b = 15;
obj2 = { c: 20, d: 'ddd' };
console.log(a === b); // false
console.log(obj1 === obj2); // false
さらに基本型はもちろん,参照型もデータ自体を変えて異なる値を得ることができる.
別の値になるのは、可変値といえ、その内部のpropertyを変えるときだけ成立します.
どうしてそれを変わらない対象にするのですか?
不変オブジェクトは(immutableobject)三大フレームワークやライブラリだけでなく,関数式プログラミング,設計モードなどの面でも重要な基礎概念である.
基本型と同様に、データを直接変更すると、参照型データでも既存のデータは変更されません.これは、内部プログラムを変更すると、既存のデータも変化することを意味します.
多くの場合、渡された値が内部変数であっても、元のオブジェクトはそのままでなければなりません.この場合、不変のオブジェクトが必要です.let user = {
name: 'hi',
gender: 'female',
}
let changeName1 = function (user, newName) {
let newUser = user;
newUser.name = newName;
return newUser;
}
let changeName2 = function (user, newName) {
return {
name: newName,
gender: user.gender,
}
}
let user2 = changeName1(user, 'bye');
let user3 = changeName2(user, 'hello again');
console.log(user.name, user2.name, user3.name); // bye, bye, hello again
console.log(user === user2, user2 === user3); // true, false
違いは次の点です.
let a = 10;
let b = a;
let obj1 = { c: 10, d: 'ddd' };
let obj2 = obj1;
b = 15;
obj2.c = 20;
console.log(a === b); // false
console.log(obj1 === obj2); // ture
b = 15;
obj2 = { c: 20, d: 'ddd' };
console.log(a === b); // false
console.log(obj1 === obj2); // false
不変オブジェクトは(immutableobject)三大フレームワークやライブラリだけでなく,関数式プログラミング,設計モードなどの面でも重要な基礎概念である.
基本型と同様に、データを直接変更すると、参照型データでも既存のデータは変更されません.これは、内部プログラムを変更すると、既存のデータも変化することを意味します.
多くの場合、渡された値が内部変数であっても、元のオブジェクトはそのままでなければなりません.この場合、不変のオブジェクトが必要です.
let user = {
name: 'hi',
gender: 'female',
}
let changeName1 = function (user, newName) {
let newUser = user;
newUser.name = newName;
return newUser;
}
let changeName2 = function (user, newName) {
return {
name: newName,
gender: user.gender,
}
}
let user2 = changeName1(user, 'bye');
let user3 = changeName2(user, 'hello again');
console.log(user.name, user2.name, user3.name); // bye, bye, hello again
console.log(user === user2, user2 === user3); // true, false
違いは次の点です.{}
に入れ、新しい対象を生み出し、異なる株価を見て別の要因となった.本の中には浅いコピーと深いコピーの内容があり、他のブログの内容や頭の中で整理する必要があり、かなり長くなる可能性があり、次の編で書く必要があります.
Reference
この問題について(1-基本タイプと参照タイプの挙動が異なる原因:研究), 我々は、より多くの情報をここで見つけました https://velog.io/@jyujung2/TIL-기본형-타입과-참조형-타입이-서로-다르게-동작하는-이유テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol