0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【超基礎】TypeScript変数のスコープについて

Last updated at Posted at 2024-11-25

前提

この記事は、初学者の私が、サバイバルTypeScriptで学んだこと+調べたことをまとめたものになります。

従って、経験則に基づいた発言ではないため、一部慣習とは違っていたり、認知にずれがあったりする可能性がありますので、ぜひコメントで指摘していただけると幸いです。

スコープとは?

  • ある変数を使うことができる範囲を指す
  • 大きく分けてグローバルスコープローカルスコープに分けることができる
  • それぞれグローバル変数ローカル変数と呼ばれる

グローバルスコープについて

  • プログラムのどこからでも参照できる変数
  • ブラウザではwindowオブジェクトがグローバルスコープのオブジェクトとなり、consoleDateなどを提供している
  • 意図しない影響を受けるリスクがある

JSでは変数宣言の際、letconstを付けないとグローバル変数になるため注意が必要。

TSではエラーになる

const a:number = 10;//グローバル変数の宣言

function func(){
    console.log(a);
}

func() //=>10
console.log(a); //=>10

ローカルスコープについて

  • ある一定の範囲内で参照できる変数
  • 基本的に{}の中で宣言されたものは{}の中で有効となる
  • グローバル変数と名前が競合した場合、ローカル変数が優先される

関数スコープ

  • 関数の中でのみ参照できる変数
//関数外からのアクセスはエラーになる
function func(){
    const a:number = 10;
    console.log(a);
}
func() //=>10
console.log(a) //=>Error
//ローカルスコープ内ではローカル変数が優先される
const a: number=20;

function func(){
    const a:number = 10;
    console.log(a);
}

func() //=>10
console.log(a) //=>20

レキシカルスコープ

  • 関数呼び出しの前で宣言された、関数スコープの外の変数は関数スコープの中で扱うことができる

  • 安全なグローバル変数の様な振る舞いをする

function main() {    
    function func() {
        console.log(a);
    }    
    //関数呼び出しの前で宣言
    let a: number = 10;
    func();// => 10     
}
function main() {    
    function func() {
        console.log(a);
    }    
    //関数呼び出しの後で宣言    
    func();// => undefined
    let a: number = 10;
}

ブロックスコープ

  • {}で囲まれた範囲でのみ有効となる
  • 関数やif文じゃない、素の{}内でも有効
{    
    let a: number = 10;
    console.log(a); // => 10
}
console.log(a)// => Error

まとめ

以上になります。実装の練習をしていた時何でもかんでもグローバル変数にしていた過去の自分をぶんなぐってやりたいですね!!

当方初学者なため、認知のずれや、モダンな開発現場ではもう使わない表現などがありましたらコメントで指摘していただけると幸いです。😸

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?