JavaScriptにおける特殊変数(this, global, globalThis)

JavaScriptにおける特殊変数(this, global, globalThis)

  • this: 文脈依存のキーワード
  • global: Node.jsでのグローバルオブジェクト
  • globalThis: 環境依存しないグローバルオブジェクト

this

thisは、関数やオブジェクトの文脈によって異なる値を持つ特殊なキーワードです。 JavaScriptでは動的な文脈でthisが決まるため、挙動を正確に理解することが重要です。

通常の関数でのthis

function showThis() {
    console.log(this);
}
showThis(); // グローバルオブジェクトを指す (ブラウザではwindow)
    

オブジェクト内のメソッドでのthis

const obj = {
    name: 'Object',
    showThis() {
        console.log(this);
    }
};
obj.showThis(); // objを指す
    

Arrow関数でのthis

Arrow関数ではthisは呼び出し元に関係なく、定義された文脈を引き継ぎます。

const obj = {
    name: 'Object',
    arrowFunction: () => {
        console.log(this);
    }
};
obj.arrowFunction(); // グローバルオブジェクトを指す
    

コンストラクタ関数でのthis

function Person(name) {
    this.name = name;
}
const person = new Person('Hayato');
console.log(person.name); // 'Hayato'
    

global

globalはNode.jsで使用できるグローバルオブジェクトを指すキーワードです。ブラウザでは使用できません。

// Node.js環境で
console.log(global); // グローバルオブジェクトを表示
    

globalThis

globalThisは、どの実行環境でもグローバルオブジェクトを参照するために使用されます。windowglobalと異なり、環境に依存しません。

ブラウザでの例

console.log(globalThis); // windowオブジェクトを指す
    

Node.jsでの例

// Node.js環境で
console.log(globalThis); // globalオブジェクトを指す
    

まとめ

  • this: 文脈依存のキーワード
  • global: Node.jsでのグローバルオブジェクト
  • globalThis: 環境依存しないグローバルオブジェクト

これらを正しく理解することで、JavaScriptの挙動をより深く理解することができます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です