本記事ついて
本記事は プログラミング初学者の私が学習していく中でわからない単語や概要をなるべくわかりやすい様にまとめたものです。
もし誤りなどありましたらコメントにてお知らせいただけるとありがたいです。
スコープ
変数や定数には、どこからそれらからを参照できるかという範囲が定められている。
そのことをスコープと呼ぶ
グローバル領域
console.log('利樹君です!');
function toshiki() {
console.log('利樹はかわいいです');
}
console.log('利樹はとてもかわしいです。');
これを実行したとします。
ログ情報は
16:49:30 情報 利樹君です!
16:49:30 情報 利樹はとてもかわしいです。
16:49:30 情報 利樹はかわいいです
この順番になったと思います。
つまりfunction toshiki()が一番最後に実行されたのです。
function toshiki()の外はグローバル領域と言われ、関数より先にステートメントが先に実行されるのです。
次に
function toshiki() {
console.log(`${calcArea_(3, 4)}`);
const calcArea_ = (x, y) => x * y;
}
これを実行すると
ReferenceError: Cannot access 'calcArea_' before initialization
とエラーコードが出ます。
これはcalcArea_ が関数呼び出しが先に行われたことにより発生しました。
function toshiki() {
const calcArea_ = (x, y) => x * y;
console.log(`${calcArea_(3, 4)}`);
}
こちらだと普通に動くと思います。
グローバル領域を多用すると順序が分かりずらくなるので、特定のファイルにまとめて行うなどの工夫をするといいみたいです。
スコープの種類
グローバルスコープ プロジェクト全体から参照できる
ローカルスコープ 特定の範囲のみから参照できる
関数スコープ 宣言された関数の内部からのみ参照できる
ブロックスコープ 宣言されたブロックの内部からのみ参照できる
ブロック
ステートメントをグループ化したもの
構文
{
//処理
}