第15章let、constキーワードとブロックレベルスキャン
11467 ワード
モダンJavaScript Deep Diveの本を読んで重要な内容をまとめました整理した内容に間違いがあるかもしれませんが、間違ったところがあったら、メッセージを残してください.本当にありがとうございます.
この総括文には本とは異なる変形例がある.実際の本にはより多くの例と詳細な説明があるので、お勧めします.👍
第15章let、constキーワードとブロックレベルスキャン
したがって、関数の外部で宣言される変数は、コードブロック内で宣言されてもグローバル変数となる.
関数レベルスキャンは、グローバル変数の乱発の可能性を増加させる.予期せぬグローバル変数の繰り返し宣言が発生します. 変数シースによって ただし、変数が付与文の前に参照される場合、
varキーワード宣言の変数
宣言フェーズでは、変数識別子を実行コンテキストのディレクトリ環境に登録し、JavaScriptエンジン変数の存在を通知します.そして、変数は、初期化段階で直ちに
letキーワード宣言の変数
宣言フェーズと初期化フェーズは別々に行われる.
実行時の前にjavascriptエンジンはデフォルトで宣言ステップを実行しますが、初期化ステップは変数宣言に達すると実行されます.
初期化ステップの実行前に変数にアクセスしようとすると、参照エラーが発生します.
スキャンの開始点から初期化フェーズの開始点(変数宣言)まで、変数は参照できません.
仮死角エリア仮Dead Zone
:スキャンの開始点から初期化の開始点までの間で変数を参照できない区間
letキーワードとして宣言された変数が反発しない場合、上記の例はグローバル変数
ただし、 JavaScriptは、ES 6に導入された しかし、ES 6に導入された グローバルオブジェクトのプロパティを参照する場合は、 つまり、 constキーワード宣言の変数は、宣言と同時に初期化する必要があります. ブロックレベルスキャンがあり、変数エスケープが発生しないように動作する. 元の値は変更できない値なので、再割り当てなしで値を変更することはできません. 変数の相対概念定数とは、再割り当てを禁止する変数を指す.定数値を格納するためにメモリ容量が必要なため、変数と呼ぶことができます. 定数は、保守と可読性を容易にするために積極的に使用する必要があります. また、定数はプログラム全体で共通であるため、後で変更すると定数のみが変更され、メンテナンス性が向上する. 通常、定数の名前は大文字で宣言され、定数として明確に表される.複数の単語の場合は、Snake caseとして Propertyオブジェクトを変更するには、Property値を動的に作成、削除、および変更します. オブジェクトが変更された場合、変数に割り当てられた参照値は変更されません. 変数宣言デフォルトは ES 6無効 キーワードは、再割り当てが必要な場合にのみ使用されます.この場合、変数のスキャンはできるだけ縮小されます. |変更なしで読み取り専用(再割り当てを必要としない定数)の元の値とオブジェクトには 変数を宣言する場合は、まず
この総括文には本とは異なる変形例がある.実際の本にはより多くの例と詳細な説明があるので、お勧めします.👍
第15章let、constキーワードとブロックレベルスキャン
varキーワードとして宣言された変数の問題
変数の繰り返し宣言を許可
var
キーワードとして宣言された変数は繰り返し宣言できますvar x = 1;
var y = 1;
var x = 100; // 초기화 문이 있는 변수 선언문은 자바스크립트 엔진에 의해 var 키워드가 없는 것처럼 동작한다.
var y; // 초기화 문이 없는 변수 선언문은 무시된다.
console.log(x); // 100
console.log(y); // 1
かんすうレベルそうさ
var
キーワードとして宣言された変数は、関数のコードブロックのみを領域としてスキャンする.へんすうかそく
var
キーワードで変数を宣言すると、変数宣言の役割は変数エスケープによってscopeの前に引き出されたようになります.var
キーワードとして宣言された変数は、変数宣言の前に参照できます.undefined
は常に返されます.console.log(foo); // undefined
foo = 123;
console.log(foo) // 123
var foo;
letキーワード
繰り返し宣言変数の禁止
let
同じ名前の変数をキーワードで繰り返し宣言すると構文エラーブロックレベルスキャン
let
キーワードとして宣言された変数は、すべてのコードブロックを領域スキャンとして認定するブロックレベルスキャンに従う.へんすうかそく
let
キーワードとして宣言された変数の動作は、変数エスケープが発生しないようにします.let
変数宣言の前にキーワードとして宣言された変数を参照すると、参照エラーが発生します宣言フェーズでは、変数識別子を実行コンテキストのディレクトリ環境に登録し、JavaScriptエンジン変数の存在を通知します.そして、変数は、初期化段階で直ちに
undefined
に初期化される.したがって、scopeに変数が存在するため、変数宣言文の前に変数にアクセスしてもエラーは発生しません.undefined
のみ返却します.変数付与文に到達してから、値が割り当てられます.宣言フェーズと初期化フェーズは別々に行われる.
実行時の前にjavascriptエンジンはデフォルトで宣言ステップを実行しますが、初期化ステップは変数宣言に達すると実行されます.
初期化ステップの実行前に変数にアクセスしようとすると、参照エラーが発生します.
スキャンの開始点から初期化フェーズの開始点(変数宣言)まで、変数は参照できません.
仮死角エリア仮Dead Zone
:スキャンの開始点から初期化の開始点までの間で変数を参照できない区間
let foo = 1; // 전역 변수
{
console.log(foo); // 참조 에러: 초기화 이전에 foo에 접근할 수 없습니다.
let foo = 2; // 지역 변수
}
foo
の値を出力する必要があります.ただし、
let
キーワードとして宣言された変数は、依然としてエスケープされ、参照エラーが発生します.let
、const
を含むすべての宣言をサポートします.let
、const
およびclass
の声明を用いて、その行為はエスケープが発生しないようにする.グローバルオブジェクトとlet
var
キーワードとして宣言されたグローバル変数、グローバル関数、およびデフォルトのグローバルは、グローバルオブジェクトwindow
のプロトタイプになります.window
を省略できます.// 전역 객체
var x = 1;
// 암묵적 전역
y = 2;
// var 키워드로 선언한 전역 변수는 전역 객체 window의 프로퍼티다.
console.log(window.x); // 1
// 전역 객체 window의 프로퍼티는 전역 변수처럼 사용할 수 있다.
console.log(x); // 1
// 암묵적 전연은 전역 객체 window의 프로퍼티다.
console.log(window.y); // 2
console.log(y); // 2
let
キーワードとして宣言されたグローバル変数は、グローバルオブジェクトのプロパティではありません.window
はアクセスできません.let
グローバル変数は、非表示の概念ブロック(グローバルフォーミュラ環境の宣言環境レコード)に存在します.let x = 1;
// let, const 키워드로 선언한 변수는 전역 객체 window의 프로퍼티가 아니다.
console.log(window.x); // undefined
console.log(x); // 1
constキーワード
const
キーワードは、定数(定数)を宣言するために使用されます.ただし、必ずしも定数にのみ使用されるとは限りません.宣言と初期化
const foo; // Uncaught SyntaxError: Missing initializer in const declaration
const foo = 1;
再割り当ての禁止
const
キーワードとして宣言された変数は再割り当てが禁止されます.const foo = 1;
foo = 2; // TypeError: Assignment to constant variable.
ていすう
const
キーワードとして宣言された変数に元の値を指定した場合、変数の値は変更できません.const
キーワードとして宣言された変数に元の値が割り当てられている場合、元の値は変更できない値であり、const
キーワードは再割り当てが禁止されているため、割り当てられた値を変更することはできません._
が一般的に使用されます.// 세율을 의미하는 0.1은 변경할 수 없는 상수로서 사용될 값이다.
// 변수 이름을 대문자로 선언해 상수임을 명확히 나타낸다.
const TAX_RATE = 0.1;
// 세전 가격
let preTaxPrice = 100;
// 세후 가격
let afterTaxPrice = preTaxPrice + (preTaxPrice * TAX_RATE);
console.log(afterTaxPrice) //110
constキーワードとオブジェクト
const
キーワードとして宣言された変数にオブジェクトを割り当てると、その値を変更できます.const
キーワードは再割り当てのみ禁止されており、「不変」ではありません.var VS let VS const
const
を使用し、let
は再割り当てが必要な場合にのみ使用されます.var
キーワードlet
キーワードconst
キーワードを使用します.後でconst
キーワードを変更しても遅くはありません.Reference
この問題について(第15章let、constキーワードとブロックレベルスキャン), 我々は、より多くの情報をここで見つけました https://velog.io/@sozero/15장-let-const-키워드와-블록-레벨-스코프テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol