var、let、constの違い
2748 ワード
1.変数を再宣言できます let const var
a変数が繰り返し宣言されるにつれて、最下位のコンソールでも出力値が5になることがわかります. let, const
4.整理
基本的に、変数のスキャンはできるだけ縮小することをお勧めします.したがって、varキーワードに比べてletとconstキーワードを使用し、不変値(定数)の場合はletよりもconstキーワードを使用する方が安全です.
varletconstスキャン関数レベル(幅)ブロックレベル(狭い)ブロックレベル
var
を使用すると、変数宣言時に割り当てられた値を動的に変更できます.var name = "Tom";
console.log(name);
var name = "Juila";
console.log(name);
>>output: "Tom"
>>output: "Juila"
しかし、let
およびconst
は、変数を再宣言することはできない.let name = "Tom";
console.log(name);
let name = "Juila";
console.log(name);
>>output: Identifier 'name' has already been declared
const name = "Tom";
console.log(name);
const name = "Juila";
console.log(name);
>>output: Identifier 'name' has already been declared
2.変数を再割り当て可能let
は、変数を再割り当てすることができる.let name = 'Tom' // output: Tom
let name = 'Julia' // output: Uncaught SyntaxError: Identifier 'name' has already been declared
name = 'Kevin' // output: Kevin
逆に、const
は再割り当てできません.let name = 'Tom' // output: Tom
let name = 'Julia' // output: Uncaught SyntaxError: Identifier 'name' has already been declared
name = 'Kevin' // output: Uncaught TypeError:Assignment to constant variable.
3.変数のスキャンvar
は、実質的に機能範囲を有する.let
、const
はblockscopeを有する.var a = 1
if (true) {
var a = 5
}
console.log(a) // output: 5
非関数の場所でaが宣言されているため、グローバル変数とみなされます.a変数が繰り返し宣言されるにつれて、最下位のコンソールでも出力値が5になることがわかります.
var str = "This is String.";
if(typeof str === 'string'){
var result = true;
} else {
var result = false;
}
console.log(result); // result : true
関数(if文)ではなく領域スキャン(関数レベルスキャン)のみが認められるため、グローバル変数(共有)として認定される.let a = 1
if (true) {
let a = 5
}
console.log(a) // output: 1
let
と宣言されると、if文コードブロック内に領域スキャン(ブロックレベルスキャン)があり、コンソールが撮影されると、グローバルなaが結果値として出力される.const
もそうです.var str = "This is String.";
if(typeof str === 'string'){
const result = true;
} else {
const result = false;
}
console.log(result); // result : result is not defined
let
、const
は、すべてのコードブロック(ex.関数、if、for、while、try/catch文など)を領域スキャンのブロックレベルスキャンと見なす.4.整理
基本的に、変数のスキャンはできるだけ縮小することをお勧めします.したがって、varキーワードに比べてletとconstキーワードを使用し、不変値(定数)の場合はletよりもconstキーワードを使用する方が安全です.
varletconstスキャン関数レベル(幅)ブロックレベル(狭い)ブロックレベル
Reference
この問題について(var、let、constの違い), 我々は、より多くの情報をここで見つけました https://velog.io/@heejinkim0812/var-let-const의-차이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol