[CS]Scope(スキャン)Day-15
2833 ワード
コンピュータエンジニアリングではScopeは「範囲」を表します.正確には、「変数の有効範囲」として使用されます.
letは、contの正しい使い方とアドバイスを理解するために文章を書きます.
Scopeを学ぶ理由はオーバーラップ規則 ブロック作用域 全局スキャンと領域スキャン グローバル変数と地域変数の間の優先度 let,const,varの差 グローバルオブジェクト について
逆にfunction(){}は、同じ側にある変数にアクセスできます.
次の例で判断できます.
ex)に示すように、サイドミラーで宣言された変数は、内側ミラーで使用することができる. ですが、内部宣言された変数は同じページでは使用できません.
最も似た方向のスキャンです.どこでも利用できます.
グローバル範囲以外のすべての範囲を領域範囲と呼びます.△一番奥のものを地域眼鏡とは絶対に言わない.
ゾーン変数は、グローバル変数よりも優先されます.
Scopeには2つのタイプがあります.ブロックscope:カッコベースの範囲ブロックスキャン(矢印関数はブロックスキャン). 関数scope:関数キーワードを含む関数宣言と関数式のscope.
矢印関数はブロックスキャンに含まれます.(矢印関数は関数スキャンではありません.)
最近letを使用する回数はvarより多い.(これは、変数宣言によってエラーが発生する可能性があるためです.)
varバグについて説明しましょう.
定数を定義するときにconstを使用します.constの場合、再割り当てはできません.したがって、constに値を再割り当てすると、タイプエラーが発生します.constを使用して、予期せぬ値の変更を防止します.
グローバル変数に過剰な変数を宣言しないでください.
アクセス可能なグローバル変数はどこでも便利ですが、予期せぬ変更が発生する可能性があるので注意してください.
var変数を使用すると、再宣言でエラーは発生しません.特にvarをグローバル変数として使用すると、大きな問題が発生する可能性があります.
宣言なしに変数を割り当てないでください.宣言なしに変数を割り当てると、varとして宣言されたグローバル変数に変更されます.
letは、contの正しい使い方とアドバイスを理解するために文章を書きます.
Scopeを学ぶ理由は
Scope変数の有効範囲について
let username = 'kimcoding';
if (username) {
let message = `Hello, ${username}!`;
console.log(message); // ?
}
console.log(message); // ?
let messageは現在if(){}で宣言されています.そのため、同じ側から近づくことはできません.逆にfunction(){}は、同じ側にある変数にアクセスできます.
次の例で判断できます.
ex)
let greeting = 'Hello';
function greetSomeone(){
let firstName = 'KJ';
return greeting + ' ' + firstName;
}
console.log(greetSomeone()); // Hello KJ
// console.log(firstName); // 접근 불가능
変数にアクセスできるブロックの範囲があります.この範囲をScope Scopeと呼びます.グローバルスキャン
最も似た方向のスキャンです.どこでも利用できます.
ゾーンスキャン
グローバル範囲以外のすべての範囲を領域範囲と呼びます.△一番奥のものを地域眼鏡とは絶対に言わない.
ゾーン変数は、グローバル変数よりも優先されます.
let name = "KJ"; // 전역 변수
function showName(){
let name = "SJ"; // 지역 변수
console.log(name);
}
console.log(name); // KJ
showName(); // SJ
console.log(name); // KJ
showName()がSJを出力するのは、領域変数の優先度がグローバル変数より高いためです.変数名が同じであるため,同じ辺の変数が内側変数によって隠される現象を変数shadowingと呼ぶ.(影)注意事項
let name = "KJ"; // 전역 변수
function showName(){
name = "SJ"; // let 이 없는 상태에서!!!
console.log(name);
}
console.log(name); // KJ
showName(); // SJ
console.log(name); // SJ
showName()関数は、実行前にグローバル変数を読み込みます.ただし、letがない場合、nameに「SJ」が含まれて実行されると、nameのグローバル変数はshowName()関数によって「SJ」に変更されます.したがって、3番目の出力も「SJ」である.Scopeのタイプ(let,const,var)
Scopeには2つのタイプがあります.
注意事項
矢印関数はブロックスキャンに含まれます.(矢印関数は関数スキャンではありません.)
最近letを使用する回数はvarより多い.(これは、変数宣言によってエラーが発生する可能性があるためです.)
varバグについて説明しましょう.
var name = "KJ"
var name = "SJ"
console.log(name);
// 재선언을 해도 에러가 발생하지 않습니다. 코드가 적을 때 문제가 없지만 길어질 경우 큰 문제를 발생시킬 수 있습니다.
値が変わらない定数を定義するためのconst定数を定義するときにconstを使用します.constの場合、再割り当てはできません.したがって、constに値を再割り当てすると、タイプエラーが発生します.constを使用して、予期せぬ値の変更を防止します.
変数宣言の注意事項
グローバル変数に過剰な変数を宣言しないでください.
アクセス可能なグローバル変数はどこでも便利ですが、予期せぬ変更が発生する可能性があるので注意してください.
var変数を使用すると、再宣言でエラーは発生しません.特にvarをグローバル変数として使用すると、大きな問題が発生する可能性があります.
宣言なしに変数を割り当てないでください.宣言なしに変数を割り当てると、varとして宣言されたグローバル変数に変更されます.
Reference
この問題について([CS]Scope(スキャン)Day-15), 我々は、より多くの情報をここで見つけました https://velog.io/@cptkuk91/CS27テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol