戻る

グローバルオブジェクトの退避変数と上書き
退避変数を使用した実行とグローバルオブジェクトを上書きする例

(1) グローバルオブジェクトを退避変数に保存して、ローカルスコープ内で実行する方法
(2) グローバルオブジェクトを上書きし、変更した結果を実行する方法

[サンプル]
copy
//(1)global
function glolbalTest() 
{
	console.log("global")
}
//(2)variable
const savedGlobalTest = glolbalTest;

function test() 
{
	//(3)local
	function glolbalTest() 
	{
		console.log("local");
	}
	//[step 1]
	globalThis.glolbalTest(); //global
	
	//[step 2]
	savedGlobalTest(); //global

	//[step 3]
	glolbalTest(); //local

	// (4)overwrite
	globalThis.glolbalTest = function() {
		console.log("overwrite");
	};

	//[step 4]
	globalThis.glolbalTest(); //overwrite

	//[step 5]
	savedGlobalTest(); //global

	//[step 6]
	glolbalTest(); //local
}

test();
function glolbalTest()
外側のスコープで定義した関数です。

const savedGlobalTest = glolbalTest;
外側のスコープで定義した関数を変数に保存します。

[内側のスコープ]
function glolbalTest()
外側のスコープで定義した関数との動きを比較するために準備した関数

globalThis.glolbalTest = function() {
外側のスコープで定義した関数を無名関数を使用して処理内容を上書きしています。

[step 1]
globalThis.glolbalTest();
globalThisを使用して外側で定義した関数を実行しています。

[step 2]
savedGlobalTest();
外側のスコープで定義した関数を保存した変数を実行することで
外側のスコープで定義した関数を実行しています。

[step 3]
[内側のスコープ]
glolbalTest();
test関数内の関数が実行されます。

[step 4]
[上書きをした関数]
globalThis.glolbalTest();
globalThis.glolbalTest = function() {
が実行されたため、外側のスコープで定義した関数が上書きされています。
このため、外側のスコープで定義した関数を実行しても、上書きされた処理内容が実行されます。

[step 5]
savedGlobalTest();
すでに保存されている外側のスコープで定義した関数を保存した変数を実行するため
最初に保存していた外側のスコープで定義した関数が実行されます。

[step 6]
[内側のスコープ]
glolbalTest();
test関数内の関数が実行されます。




戻る


著作権情報
ホームページおよプリ等に掲載されている情報等については、いかなる保障もいたしません。
ホームページおよびアプリ等を通じて入手したいかなる情報も複製、販売、出版または使用させたり、
または公開したりすることはできません。
当方は、ホームペーよびアプリ利用したいかなる理由によっての障害等が発生しても、
その結果ホームページおよびアプリ等を利用された本人または他の第三者が被った損害について
一切の責任を負わないものとします。