[JS/Node] : Scope
10628 ワード
💡Scope
📌Scopeの例
」例1
let username = 'Kim Hosik';
if (username) {
let message = `Hello, ${username}!`;
console.log(message); // 1
}
console.log(message); // 2
Hello, Kim Hosik!
:5行目にメッセージを出力する場合、括弧の外側から4行目のユーザ名が入力されているため、正常に出力されます.Uncaught ReferenceError: message is not defined at <anonymous>:8:13
:8行目では、message変数自体が括弧内で宣言されているため、外部からアクセスできず、ReferenceErrorとなります.」例2
let greeting = 'Hello';
function greetSomeone () {
let firstName = 'Hosik';
return greeting + ' ' + firstName;
}
console.log(greetSomeone()); // 1
console.log(firstName); // 2
Hello Hoisk
:greeting変数は外部で定義されているため、関数の内部で使用できます.:greeting変数とfirstName変数の組み合わせによって「Hello Hosik」文字列が返されます.
Uncaught ReferenceError: firstName is not defined at <anonymous>:8:13
:firstName変数は関数の内部に定義されているため、関数の外部にアクセスできず、ReferenceErrorとなります.」例3
let name = '김코딩'; // 전역 변수
function showName() {
let name = '김호식'; // 지역 변수
console.log(name); // 1
}
console.log(name); // 2
showName();
console.log(name); // 3
1号:金浩植
:関数で宣言されたnameという領域変数へのアクセス
:変数名はグローバル変数と同じですが、ゾーン変数の優先度がグローバル変数より高いため、ゾーン変数名が出力されます.
:同じ変数名のため、外部変数が内部変数によって隠される現象を変数shadowingと呼ぶ.
2号:コード
:1行目からグローバル変数として宣言されたnameを取得します.
:ScopeルールによってshowName関数内に宣言された領域変数nameにアクセスできません.
3番:コード
:1行目からグローバル変数として宣言されたnameを取得します.
:ScopeルールによってshowName関数内に宣言された領域変数nameにアクセスできません.
▼▼例4
let name = '김코딩'; // 전역 변수
function showName() {
name = '김호식'; // 지역 변수
console.log(name); // 1
}
console.log(name); // 2
showName();
console.log(name); // 3
1号:金浩植
:関数で宣言されたnameという領域変数へのアクセス
:変数名はグローバル変数と同じですが、ゾーン変数の優先度がグローバル変数より高いため、ゾーン変数名が出力されます.
:同じ変数名のため、外部変数が内部変数によって隠される現象を変数shadowingと呼ぶ.
2号:コード
:1行目からグローバル変数として宣言されたnameを取得します.
:ScopeルールによってshowName関数内に宣言された領域変数nameにアクセスできません.
3号:金浩植
:letキーワードを使用する宣言は存在しないため、「金虎植」値に割り当てられたname変数は、グローバル宣言を使用するname変数を表します.
:showName関数は実行前に「kim coding」を出力し、値をグローバル変数nameに変更するため、3番目の出力「kim coding」
📌Scopeとは?
勘定科目のScope有効範囲
一番外側のScopeはグローバルScopeと呼ばれています.
非大域的な他のScopeをローカルScopeと呼ぶ.
グローバルスキャンで宣言される変数は、グローバル変数です.
Local Scope(領域スキャン)で宣言される変数は、領域変数です.
変数アクセスルールの異なる有効範囲
📌Scopeのタイプ
✔️Block Scope
:かっこで区切る
」例1
for (let i = 0; i < 5; i++) {
console.log(i) // 다섯 번 반복한다.
}
console.log('final i:', i); // 1
:varキーワードはBlock Scopeを無視し、Funtion Scopeのみに従うため、Blockの範囲内では使用できません.
Function Scope
:関数宣言式と関数式で範囲を区切る
📌var, let, const
varキーワード
したがって、letキーワードを使用することをお勧めします.
letキーワード
constキーワード
Reference
この問題について([JS/Node] : Scope), 我々は、より多くの情報をここで見つけました https://velog.io/@hosickk/JSNode-Scopeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol