let、const、varの違いと違い
3360 ワード
ハウスティンとは何ですか。
関数のすべての宣言を、関数の有効範囲の最上位に移動します.
関数に存在する変数/関数宣言に関する情報を記憶し、実行します.
有効範囲:関数ブロック{}内で有効
すなわち、関数では、下部に存在するコンテンツに必要な値を上げる.
実際のメモリに変化はありません.
noDefine();
function noDefine() {
// 변수 선언 및 할당 이전에 호출 테스트
console.log("not defined : " + name);
var name = "ojava";
// 변수 초기화 이후 값 확인
console.log("defined : " + name);
}
上記のコードの結果を予測すると、最初のコンソールログで使用されたnameが宣言されないため、エラーが発生する可能性がありますが、エラーは発生せず、次のようなログが発生します.not defined : undefined
defined : ojava
ただし,この場合,変数を宣言するvarを省略すると思わぬ結果が生じるので注意する.
noDefineという名前の関数範囲の変数を作成しようとしますが、name="ojava"として宣言すると、例外結果が返されます.
noDefine();
function noDefine() {
console.log("not defined : " + name);
// var name = "ojava";
name = "ojava"; // 변수 선언 명령어 없이 name 변수에 할당함
console.log("defined : " + name);
}
not defined : ojava
defined : ojava
エラーは発生しないだけでなく、変数を割り当てる前に割り当てられた値に戻します.なお、関数では、変数宣言コマンドのほか、宣言時にグローバル変数として使用されます.
この場合、関数で宣言されていないコマンドの初期化値がグローバル変数として使用され、予期せぬ結果値が返される可能性があるため、注意が必要です.
今var、let、constを比較します!
まずvarは変数宣言方式に大きな欠点がある.
var name = 'bathingape'
console.log(name) // bathingape
var name = 'javascript'
console.log(name) // javascript
一度変数を宣言したにもかかわらず、出力の値がそれぞれ異なり、エラーは発生していないことがわかります.したがって,ES 6以降,これを補うために増加した変数宣言方式はletとconstである.
上のコード宣言をletに変更すると、エラーが発生します!
同様に、constが再び宣言すると、エラーが発生します!
let name = 'bathingape'
console.log(name) // bathingape
let name = 'javascript'
console.log(name)
// Uncaught SyntaxError: Identifier 'name' has already been declared
ではletとconstの違いは何ですか?
letは変数を再割り当てできます.でも、
let name = 'bathingape'
console.log(name) // bathingape
let name = 'javascript'
console.log(name)
// Uncaught SyntaxError: Identifier 'name' has already been declared
name = 'react'
console.log(name) //react
constは変数を再宣言したり、変数を再割り当てしたりすることはできません.const name = 'bathingape'
console.log(name) // bathingape
const name = 'javascript'
console.log(name)
// Uncaught SyntaxError: Identifier 'name' has already been declared
name = 'react'
console.log(name)
//Uncaught TypeError: Assignment to constant variable.
では、どのような宣言がいいのでしょうか。
何が良いのかははっきり言えませんが、場合によっては良い方法があるようです!
変数宣言の場合はconstを使用し、再割り当てが必要な場合は限定letを使用します。
また、オブジェクトを再割り当てすることは一般的ではありません.contを使用すると、予期せぬ再割り当てを防止できるため、より安全です.
再配分が必要な場合は、限定害letを使用します.このとき、変数のスキャンはできるだけ狭くなります.
再割り当てを必要としない定数とオブジェクトについてconstを使用します.
Reference
この問題について(let、const、varの違いと違い), 我々は、より多くの情報をここで見つけました https://velog.io/@dbfudgudals/let-const-var의-차이점과-호스이스팅テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol