TIL 3|JavaScript変数とuserstrict



Use strict


usestict構文はES 5から追加された構文です.初期のJavaScriptは非常に柔軟で、コードが不安定または安全ではない要因の一つです.これにより、厳格モードのコードを「usestict」と呼ぶ完全な厳格モードが形成される.
'use strict';
厳格モードは、信頼性とセキュリティを向上させ、非厳格モードでの可用性を制限することができる.以下に、非厳格モードでは可能であるが、厳格モードでは不可能である例を示す.
console.log(age);
a = 6;
// 비엄격모드에서는 6이 출력됩니다. 엄격모드에서는 오류가 나오게 됩니다.
上記のコードでは、指定されていない値の変数を出力してから変数に値を割り当てるコードを作成したり、実行したりすることができます.後に与えられた値も出力されます.
JAvascriptでは、これらの異常なコードをエラーなく実行でき、プログラミングの世界に入るのに役立ちます.しかし,このコードは長さの増加に伴って増大し,これは耐えられない問題である.厳格なモードでは、最初からこれらのエラーをエラーとして定義し、開発者が犯す可能性のあるエラーを減らします.
他の厳格モードで記述されたコードと非厳格モードで記述されたコードの相互接続に問題が生じるため、JSコードを接続する際には厳格モードで記述されていることを確認する必要がある.

Var


varは変数宣言方式の1つと呼ばれます.ES 6に入ってから使用しないことをお勧めする方法です.原因は二つある.
最初の理由はHostingですHostingはJavaScriptの特性で、変数または関数の宣言を最上位にドラッグして、変数または関数を宣言する前に宣言を使用することができます.(関数の外でvarを宣言すると、ソースコードの最上位レベル、関数でvarを宣言すると、関数の最上位レベルに昇格します.)これらの機能により、次のコードが正常に動作します.
	age = 4;
   var age;
	console.log(age);
	//결과: 4
var age; コードを最上位に置くため、作成されたコードの上でage=4;先に宣言すると、後で宣言するageに4という値が含まれます.
2つ目の理由はno block scopeです.varとして宣言された変数はブロック{}レベルではなく、関数()レベルです.したがって,どこに宣言してもブロック{}の範囲を用いることができる.したがって、次のコードが実行されます.
	{
     var age;	
     age = 4;
	}
	console.log(age);
	//결과: 4
varを使用する場合のエラーはvarリファレンスサイトでさらにチェックできます.

LetとConst


ES 6に入ると、varの役割に代わるletとconstが追加されます.letとconstはブロックレベルで計算され、管理されません.letとconstの最大の違いは、変更できるかどうかです.
letは、宣言後に後で値を変更できます.let宣言と使用:
let globalName = 'global name';
{
   let name = 'ellie';
   console.log(name); // ellie가 출력됩니다.
   name = 'hello';
   console.log(name); // hello가 출력됩니다.
   console.log(globalName); //global name이 출력됩니다.
}
console.log(name); // {}안에 있는 name이 전달되지 않으므로 undefined가 출력됩니다.
console.log(globalName); //global name이 출력됩니다.
constは宣言と同時に値を代入し、その後は変更できません.constのように変更できない変数を使用するとメリットがあります.安全で信頼性が高く、スレッドの安定性を向上させ、開発者のミスを減らすのに役立ちます.
const宣言と使用:
const daysInWeek = 7;
const maxNumber = 5;
console.log(daysInWeek); // 7이 출력됩니다.
console.log(maxNumber); // 5가 출력됩니다.
// daysInWeek = 7; // 이 코드는 에러로 나오게 됩니다.