blog

JSの基本原則、スタック、変数、オブジェクトの詳細ポイントの過程でコードを実行する

コードが実行され、内容が占有されていない場合、スタックアウト操作が発生します。 グローバルに宣言された変数は、GOに何らかのマッピングを持ちますが、これはGOにもこれらの属性の1つを追加することと同じ...

Dec 13, 2020 · 3 min. read
シェア

Execution Context Stack

jsコードを実行するための環境が必要です:

実行コンテキストスタック

<=> <=> <=>等価:スタックスコープ・コンテキスト実行環境

  • 実行可能なグローバル環境:EC(g)

  • 関数が実行される環境:EC(function)

変数オブジェクト

変数が格納されている空間を変数オブジェクトと呼びます。

  • VO: グローバル変数オブジェクト。

  • AO:関数内の変数オブジェクト、EC(function)内にプライベート変数を格納。

コードが実行されると、すべてのスタックが順番に供給されます。

コードが実行され、中身が埋まっていなければ、スタックアウトです。

グローバル・オブジェクト

GO: ブラウザはいくつかのメソッドとプロパティをGOに提供します。

グローバル・ウィンドウ変数がGOを指すようにします。

グローバル変数windowはVOに格納されます。

そして、GOはVO/AOとは何の関係もありません。

これはここで理解できます

GOとは、組み込みメソッドやプロパティであるキーと値のペアを含むメモリのヒープで、このメモリのヒープのアドレスがwindowに与えられ、windowがグローバルオブジェクトであることと同じです。

VO GOとの関係

var a = 1;
console.log(window.a);
=> 1

globalの下で宣言された変数は、GOに何らかのマッピングを持ちますが、これはGOにもそのようなプロパティを追加することと同じです。もし変数が宣言されておらず、EC(g)を知っているスコープを通してルックアップが実行され、何も見つからなかった場合、それはこのプロパティをGOに追加していることになります。

windowは特別なオブジェクトで、windowのメンバーアクセスには、"window. "を省略することができ、直接プロパティの名前を記述すると、内部のメソッドやプロパティを使用することができます。

変数の格納

1、複数の変数が同じ値を指すことはできますが、1つの変数が対応できる値は1つだけです。

2、変数オブジェクトは変数格納領域と値格納領域に分けられ、値が基本データ型の値であれば、値格納領域に直接格納され、変数がそれを指すようにします。値が参照データ型の値であれば、オブジェクトのキーと値のペアまたは関数のコード文字列を格納するためのヒープメモリが開かれ、このヒープメモリの空間のアドレスが値格納領域に置かれ、変数がそれを指すようにします。

オブジェクトのプロパティ名

1、オブジェクトメンバーアクセス、番号の内側にプロパティ名の文字列は、配列のインデックスのように、あなたは、転置カンマを省略することができます

let obj={},a="1",b=1;
obj[a]=" ;
obj[b]=" ;
console.log(obj["1"]);
=> " 

2、および同じ理由で、最初の結論することができます:オブジェクトの属性名は、任意の基本的なデータ型にすることができます参照データ型にすることはできません、それは参照データ型である場合、それは文字列に変換されます。しかし、処理では、シンボルのデータ型に加えて、さまざまなデータ型と文字列が交換可能です。

let obj={};
obj[true]=1;
obj[null]=10;
obj[undefined]=" ;
console.log(obj);
=> {true: 1, null: 10, undefined: " }
console.log(obj["true"],obj["null"],obj["undefined"]);
=> 1 10 " 
let obj ={};
obj[Symbol(10)]=20;
console.log(obj)
=> {Symbol(10): 20}
console.log["Symbol(10)"]
=> undefined

3, オブジェクトをトラバースする際に、シンボルデータ型が

let obj ={"name":"LiHua","age":18};
obj[Symbol(10)]=20;
for(let key in obj){
 console.log(key);
}
=> name age
(注:キーは走査されるオブジェクトのプロパティ名で、プロパティの値はobjである。[key])
Read next

オーディオ開発の基本概念

図のフローでは、エンコード後に2つのオプションがあります:\nそれは、データを直接ストリーミング・サーバにプッシュする方法と、ライブ放送のように受信側がストリーミング・サーバからデータを引き出す方法です。\n図中の概念を以下に説明します:\nキャプチャ\nエンコードとデコード\nキャプチャ後のデータは大きく冗長なので、エンコードする必要があります。

Dec 13, 2020 · 11 min read