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('Aiko');
console.log(person.name); // 'Aiko'
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の挙動をより深く理解することができます。