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
は、どの実行環境でもグローバルオブジェクトを参照するために使用されます。window
やglobal
と異なり、環境に依存しません。
ブラウザでの例
console.log(globalThis); // windowオブジェクトを指す
Node.jsでの例
// Node.js環境で
console.log(globalThis); // globalオブジェクトを指す
まとめ
this
: 文脈依存のキーワードglobal
: Node.jsでのグローバルオブジェクトglobalThis
: 環境依存しないグローバルオブジェクト
これらを正しく理解することで、JavaScriptの挙動をより深く理解することができます。