ブロックスコープ
可視領域 (англ. Scope) - 変数を使用できるプログラムの部分. .js
ファイルを作成するときは、ファイル全体のスコープを作成します内部スコープを作成するには、中括弧で宣言する必要があります { ... }
.
// 最初のスコープ
let fruit = 'Banana'
{
// 2番目のスコープ
let fruit = 'Apple'
{
// 3番目のスコープ
let fruit = 'Lime'
}
}
この例では、異なるスコープで3つの変数を作成しました。これらの変数には、独自のバージョンの変数が含まれています。 fruit
, したがって、エラーは発生しませんが、同じスコープで同じ名前の2つの変数を作成しようとすると、エラーが発生します。
// 最初のスコープ
let fruit = 'Banana'
{
// 2番目のスコープ
let fruit = 'Apple'
let fruit = 'Lime' // ここでエラーが発生します
}
中括弧のブロックを使用するため、さまざまな構成を作成するときは、この構成のスコープも作成します { ... }
.
if (true) {
// 条件文の範囲
}
for (let i = 0; i > 5; i++) {
// ループスコープ
}
function test() {
// 関数スコープ
}
これらの例では、各構成に独自のスコープがあります。
グローバルスコープ
グローバルスコープとは、他のすべてのスコープがこのスコープの子であることを意味します。グローバルスコープには、すべての関数とブロックの外部で宣言された変数が含まれています。
// グローバルスコープ
let fruit = 'Banana'
グローバルスコープで作成された変数は呼び出されます グローバル変数
. グローバル変数は、すべての子スコープで使用できます。
ローカルスコープ
ローカルスコープには、コードの特定の部分で宣言されている変数が含まれています。たとえば、ループ内で作成された変数はローカルになります。
for (let i = 0; i > 5; i++) {
// 変数 i ローカルです
}
ローカル変数は、それらが宣言されたブロック内でのみ使用できます。
function learnFavaScript() {
function showFruit() {
// 変数 fruit ローカルです
let fruit = 'Banana'
}
// したがって、関数外では使用できません。
return fruit
}
// ReferenceError: fruit is not defined
の例
異なるスコープで同じ名前の2つの変数を使用します。関数 otherFruit()
変数を返します fruit
それが初期化されるスコープから Lime
持ち去ったら let
関数から otherFruit()
, 次に、変数を作成する代わりに 書き直します .
ローカル変数を呼び出そうとするとどうなりますか 親スコープで?グローバルスコープで変数を呼び出そうとしているため、エラーが発生します , 作成しませんでした。
function learnJavaScript() {
let num
for (let i = 0; i != 5; i++) {
num += i
}
return i
}
//ReferenceError: i is not defined
禁止 var
記事 変化する 使用するように言いました var
私たちはしません、それはスコープとだけ接続されています。
- 同じスコープ内で、キーワードを使用して同じ名前の2つの変数を作成する場合
let
またはconst
, 次に、インタープリターはエラーを表示してこれについて警告します。
function learnJavaScript() {
let fruit = 'Banana'
let fruit = 'Lime'
return fruit
// SyntaxError: Identifier 'fruit' has already been declared
}
しかし、使用する場合 var
同じ名前の変数を作成すると、再割り当てされます.
エラーは発生しません。var
変数を上書きしました fruit
- グローバル変数を作成することによって
var
を使用して同じ名前で別の変数を作成することにより、ローカルスコープから変更できますvar
. 範囲var
関数またはスクリプトのいずれかに限定.
- で作成された変数
var
宣言がどこにあるかに関係なく、スクリプトの起動の最初から宣言されていると見なされます。
- に JavaScript 前 ES6 ブロックスコープはありませんでした。それら。キーワードを使用して作成された変数
var
ブロックの内側と外側が表示されます。
if (true) {
var fruit = 'Apple' // 変数はこのブロックの外側に表示されます
}
console.log(fruit) // "Apple"
if (true) {
let fruit = 'Apple' // 変数はこのブロックの外側には表示されません
}
console.log(fruit) // "Apple"
記載されている理由により、開発者は使用を拒否しました var
問題?
に書く Discord または電報 チャット, また、私たちの購読 ニュース
質問と回答
最初のスコープはいつ作成しますか?
- サイクルを作成するとき
- ファイルを作成するとき
- ブロックを作成するとき
条件文を作成するとき、新しいスコープが作成されますか?
- はい
- いいえ
ローカル変数はどこで作成されますか?
- コードの特定の部分
- すべてのブロックの外側
このレッスンをどれだけ学んだかを理解するために、 モバイルアプリ このトピックについて私たちの学校で.
リンク
Contributors ✨
Thanks goes to these wonderful people (emoji key):
IIo3iTiv | Dmitriy Vasilev 💵 | Resoner2005 🐛 🎨 🖋 | Navernoss 🖋 🐛 🎨 |